none
Tipo VARCHAR Desprezar zeros a esquerda RRS feed

  • Pergunta

  •  

    Tenho que fazer uma comparação (em uma procedure):

     

     

    COLUNA1 COLUNA2

    00123       123

    33562       33562

    04344       4344

     

    SELECT * FROM TAB1 WHERE COLUNA1 = COLUNA2

     

    As duas colunas são do tipo VARCHAR... eu queria desprezar os zeros a esquerda como mostrado acima '00123' é diferente de '123' e '04344' é diferente de '4344'  como fazer eliminar os zeros a esquerda?

    Eu pensei em converter em INT e depois retornar pra VARCHAR... não sei se o procedimento mais correto seria esse alguém poderia dar uma sugestão?

     

    Obrigado!

    terça-feira, 29 de janeiro de 2008 13:19

Respostas

  •  

    Adriano,

     

    Se você garante que todos os dados são no formato numerico, você está correto, faça a conversão para inteiro diretamente no WHERE. Exemplo:

     

    Code Snippet

    SELECT * FROM TAB1

    WHERE CONVERT (int, COLUNA1) = CONVERT (int, COLUNA2)

     

     

     

    Apenas reforçando, TODOS registros deve estar no formato numérico, se tiver um com caractér, ele dá erro.

     

     

    Abraço

    terça-feira, 29 de janeiro de 2008 13:24

Todas as Respostas

  •  

    Adriano,

     

    Se você garante que todos os dados são no formato numerico, você está correto, faça a conversão para inteiro diretamente no WHERE. Exemplo:

     

    Code Snippet

    SELECT * FROM TAB1

    WHERE CONVERT (int, COLUNA1) = CONVERT (int, COLUNA2)

     

     

     

    Apenas reforçando, TODOS registros deve estar no formato numérico, se tiver um com caractér, ele dá erro.

     

     

    Abraço

    terça-feira, 29 de janeiro de 2008 13:24
  • Adriano,

     

    Isso mesmo fazendo a conversão destes valores para Inteiro(Int) através da função Convert você poderá fazer esta comparação da forma que deseja, e principalmente com um ganho de performance pois quando se utiliza valores inteiros para pesquisa e comparação de dados, o algoritmo existente no SQL Server para trabalhar com valores numéricos é muito superior ao algoritmo existente para trabalhar com valores string.

     

    Faça a conversão diretamente na claúsula Where da sua query, conforme o exemplo que o Alexandre postou.

    terça-feira, 29 de janeiro de 2008 15:12