Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DZnedin

Igualar quantidade de caracteres

Recommended Posts

Bom Dia Pessoal

 

Estou precisando de uma ajuda para organizar meu BD

 

tenho um campo CodProd assim

CodProd

21245810

635469872

4125321523

1256

3365421

 

 

e preciso deixa-lo padronizado com a mesma quantidade de caracteres

CodProd

0021245810

0635469872

4125321523

0000001256

0003365421

 

tenho milhares de cadastros entao precisava inserir zeros no inicio da string e deixa-los todos com o mesmo numero de caracteres no caso 10

estou utilizando o SQL Server 2008

 

Obrigado

 

Douglas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que RPAD e LPAD funcionam no SqlServer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, na vdd os equivalentes ao RPAD e LPAD seriam o LEN and REPLICATE

 

DZnedin, de uma olhada no Books On Line sobre essas sintaxes.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falou jus2ka.

 

consegui chegar no seguinte

 

declare @teste varchar(10)

set @teste=456

select right(REPLICATE('0',10)+@teste,10)

mas nao consigo aplicar na minha coluna inteira

 

alguem pode me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dznedin, fiz este exemplo, mas soh apliquei sobre a tabela com seus valoes

declare @codigo table (codigo varchar(10))


insert into @codigo values ('21245810')
insert into @codigo values ('635469872')
insert into @codigo values ('4125321523')	
insert into @codigo values ('1256')	
insert into @codigo values ('3365421')	


select right(REPLICATE('0',10)+codigo,10) from @codigo


 

A mesma sintaxe que você passou... qual a duvida?? num tendi :P

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

junior

 

 

consegui fazer aki soh que o resultado nao esta aparecendo pra mim pois a coluna esta como tipo decimal

e quando tento alterar para varchar ou char ele apresenta o seguinte erro alguma sugestao para eu fazer essa alteração do tipo da coluna

 

erro

'Prod' table

- Unable to modify table.

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Compartilhar este post


Link para o post
Compartilhar em outros sites

erro de timeout tem que mexer no timeout do db, e algumas vezes, isso da pane em alguns sistemas....

tenta dar um convert na hora de usar o replicate:

 

DECLARE @CODIGO TABLE (CODIGO decimal)


INSERT INTO @CODIGO VALUES (21245810)
INSERT INTO @CODIGO VALUES (635469872)
INSERT INTO @CODIGO VALUES (4125321523)	
INSERT INTO @CODIGO VALUES (1256)	
INSERT INTO @CODIGO VALUES (3365421)	


SELECT RIGHT(REPLICATE('0',10)+convert(varchar(100),CODIGO),10) FROM @CODIGO


 

 

Se kiser aumentar o timeout do db:

Se você tiver acesso ao enterprise manager, conecta no db, clica com o btn direto em cima da conexao, vá em propriedades.

depois va em connections, tem ali um item: Query time-out poe 0 (zero) e faça um teste

 

Curiosidade:

Este campo eh chave? Tem qtos registros esta tabela?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

junior

 

tentei aplicar a minha tabela da seguinte forma

 

SELECT RIGHT(REPLICATE('0',14)+id,14) FROM SP.dbo.spA2

 

mas ele me da como resposta a coluna com os dados originais

Compartilhar este post


Link para o post
Compartilhar em outros sites

junior

 

tentei aplicar a minha tabela da seguinte forma

 

SELECT RIGHT(REPLICATE('0',14)+id,14) FROM SP.dbo.spA2

 

mas ele me da como resposta a coluna com os dados originais

 

DZnedin,

 

Use o UPDATE para alterar a coluna na tabela:


--Gravar

UPDATE SP.dbo.spA2 SET id = RIGHT(REPLICATE('0',14)+id,14) 


--Listar
SELECT RIGHT(REPLICATE('0',14)+id,14) FROM SP.dbo.spA2

Lembre-se de efetuar um backup ou trabalhar com transação antes de executar qualquer atualização massiva em tabela do banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.