Ir para conteúdo

POWERED BY:

Arquivado

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

andreia_sp

Case when com concatenação de número

Recommended Posts

Pessoal a duvida é o seguinte, tenho um campo na tabela que é numerico. Preciso verificar o tamanho dele, se for maior que 2 entao adiciono um 0 na frente, se nao, deixo como está.

 

Fiz assim:

 

SELECT DISTINCT 
case when len(campo) = 2 then '0' + convert(varchar(3),campo) else campo end [nome_do_campo]
FROM TABELA

 

ele nao concatena o 0, somente concatena quando for 1 em vez de zero. Nao sei se o Sql server ignora, ou entende como nulo.. mas nao adiciona o zero ali na frente.

 

 

Alguem tem alguma sugestao?

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta converter toda a sentença pra varchar

 

SELECT DISTINCT case when len(campo) = 2 then convert(varchar(4),'0' + convert(varchar(3),campo)) else campo end [nome_do_campo]
FROM TABELA

 

t+

http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigada pela resposta eriva, mas nao funcionou... soh adiciona qdo for superior a zero.

 

Só corrigindo, nao está numerico no banco e sim smallint

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andreia,

 

se o campo é smallint será necessário converter tudo para varchar, outra dica, talvez esse tópico tb. possa ajudar: http://forum.imasters.com.br/index.php?showtopic=224744

 

 

t++ http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui vai um exemplo de como mascarar para 3 dígitos de maneira simples.

 

SELECT CASE WHEN ([campo] < 10)  THEN '00' 
           WHEN ([campo] < 100) THEN '0' 
           ELSE '' END + CONVERT(VARCHAR, [campo]) 
 FROM [TABELA]

 

eu coloco a quantidade de Zeros necessária e somo com o campo original convertido para String.

 

outra solução para uso frequente é criar uma stored procedure ou função que faça isso de maneira mais normalizada. mas nem sempre vale a pena.

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.