sexta-feira, 8 de outubro de 2010

Formatação de números com zeros à esquerda no SQL Server

Existem várias situações onde precisamos formatar números com zeros à esquerda para apresentar um uma consulta, para linhar e classificar corretamente um campo.

Considerando a seguinte tabela:

Create Table Teste (Codigo  int, Nome Varchar(40));

Insert into Teste Values(1,'José da Silva');
Insert into Teste Values(2,'Maria da Silva');
Insert into Teste Values(100,'Eusébio Queiroz');
Insert into Teste Values(1000,'Lucas Laranjeira');
Insert into Teste Values(200,'Judith Lima');


Se consultarmos da seguinte forma os dados:

Select Codigo, Cast(Codigo as Varchar(5)) 'CodigoAlfa', Nome
  From Teste
 Order By Cast(Codigo as Varchar(5));


Teremos o seguinte resultado:

Codigo    CodigoAlfa    Nome
1                          1        José da Silva
100                  100        Eusébio Queiroz
1000              1000        Lucas Laranjeira
2                          2        Maria da Silva
200                  200        Judith Lima

Observe que numericamente fica desordenado quando classificamos o número como varchar.
Para resolver esta situação altere a formatação do campo acrescentando os zeros à esquerda do número conforme a consulta:

Select Codigo, RIGHT('0000'+ CONVERT(VARCHAR,Codigo),5) 'CodigoAlfa', Nome
  From Teste
  Order By RIGHT('0000'+ CONVERT(VARCHAR,Codigo),5)

O resultado agora fica desta forma:

Codigo    CodigoAlfa    Nome
1                  00001        José da Silva
2                  00002        Maria da Silva
100              00100        Eusébio Queiroz
200              00200        Judith Lima
1000            01000        Lucas Laranjeira

terça-feira, 5 de outubro de 2010