none
CPF/CNPJ

    Question

  • Preciso fazer um select em uma tabela que contem compos com CPF e CNPJ, infelizmente quem desenvolveu o sistema permitiu gravar como o usuário digitava no sistema, então eu tenho CPF de várias maneiras.

    Exemplos
    156.156.894.456-46
    85645686454-69
    14.156.456.448900
    456922.456465-45

    Minha dúvida é como posso fazer um select nesta coluna removendo os pontos e barras.

    Obrigado.
    Wednesday, April 09, 2008 12:08 PM

Answers

  • Bom dia Fabio, o segredo é utilizar a função REPLACE,

     

    Segue um exemplo com seus dados.

     

    Code Snippet

    create table #tmp (CPF_CNPJ VarChar(30))

     

    insert into #tmp values('156.156.894.456-46')

    insert into #tmp values('85645686454-69')

    insert into #tmp values('14.156.456.448900')

    insert into #tmp values('456922.456465-45')

     

    select Replace(Replace(CPF_CNPJ, '.', ''),'-','') from #TMP

     

     

    Wednesday, April 09, 2008 12:42 PM
  • Fabio,

     

    È possível sim, pois o conteúdo deste campo é caracter(string), desta forma, fica mais fácil de eliminar no select estes caracteres através da função Replace.

     

    Veja abaixo se o exemplo poderá te ajudar, divide a formatação em três colunas para que você possa entender melhor:

     

    Code Snippet

    Declare @Documentos Table

            (Documento VarChar(20))

     

    Insert Into @Documentos Values('255.999.999-01')

    Insert Into @Documentos Values('99.223.990-0')

     

    Select Replace(Documento,'.','') As 'Campo Formatado sem Ponto',

           Replace(Documento,'-','') As 'Campo Formatado sem traço',

           Replace(Replace(Documento,'.',''),'-','') As 'Campo Formatado'

    from @Documentos

     

     

    Wednesday, April 09, 2008 12:57 PM
  • Fabio,

     

    Respondendo a sua dúvida em relação ao Where:

     

    Code Snippet

    Declare @Documentos Table

                (Documento VarChar(20))

     

    Insert Into @Documentos Values('255.999.999-01')

    Insert Into @Documentos Values('99.223.990-0')

     

     

    Select Replace(Documento,'.','') As 'Campo Formatado sem Ponto',

              Replace(Documento,'-','') As 'Campo Formatado sem traço',

              Replace(Replace(Documento,'.',''),'-','') As 'Campo Formatado'

    from @Documentos

    Where Documento = '255.999.999-01'

     

    ou

     

    Select Replace(Documento,'.','') As 'Campo Formatado sem Ponto',

              Replace(Documento,'-','') As 'Campo Formatado sem traço',

              Replace(Replace(Documento,'.',''),'-','') As 'Campo Formatado'

    from @Documentos

    Where Replace(Replace(Documento,'.',''),'-','') = '25599999901'

     

     

    Wednesday, April 09, 2008 1:17 PM

All replies

  • Bom dia Fabio, o segredo é utilizar a função REPLACE,

     

    Segue um exemplo com seus dados.

     

    Code Snippet

    create table #tmp (CPF_CNPJ VarChar(30))

     

    insert into #tmp values('156.156.894.456-46')

    insert into #tmp values('85645686454-69')

    insert into #tmp values('14.156.456.448900')

    insert into #tmp values('456922.456465-45')

     

    select Replace(Replace(CPF_CNPJ, '.', ''),'-','') from #TMP

     

     

    Wednesday, April 09, 2008 12:42 PM
  • E como fica no Where?

    select Replace(Replace(CPF_CNPJ, '.', ''),'-','') from #TMP where CPF_CNPJ = 456.456.895-58


    Obrigado


    Wednesday, April 09, 2008 12:51 PM
  • Fabio,

     

    È possível sim, pois o conteúdo deste campo é caracter(string), desta forma, fica mais fácil de eliminar no select estes caracteres através da função Replace.

     

    Veja abaixo se o exemplo poderá te ajudar, divide a formatação em três colunas para que você possa entender melhor:

     

    Code Snippet

    Declare @Documentos Table

            (Documento VarChar(20))

     

    Insert Into @Documentos Values('255.999.999-01')

    Insert Into @Documentos Values('99.223.990-0')

     

    Select Replace(Documento,'.','') As 'Campo Formatado sem Ponto',

           Replace(Documento,'-','') As 'Campo Formatado sem traço',

           Replace(Replace(Documento,'.',''),'-','') As 'Campo Formatado'

    from @Documentos

     

     

    Wednesday, April 09, 2008 12:57 PM
  • Fabio,

     

    Respondendo a sua dúvida em relação ao Where:

     

    Code Snippet

    Declare @Documentos Table

                (Documento VarChar(20))

     

    Insert Into @Documentos Values('255.999.999-01')

    Insert Into @Documentos Values('99.223.990-0')

     

     

    Select Replace(Documento,'.','') As 'Campo Formatado sem Ponto',

              Replace(Documento,'-','') As 'Campo Formatado sem traço',

              Replace(Replace(Documento,'.',''),'-','') As 'Campo Formatado'

    from @Documentos

    Where Documento = '255.999.999-01'

     

    ou

     

    Select Replace(Documento,'.','') As 'Campo Formatado sem Ponto',

              Replace(Documento,'-','') As 'Campo Formatado sem traço',

              Replace(Replace(Documento,'.',''),'-','') As 'Campo Formatado'

    from @Documentos

    Where Replace(Replace(Documento,'.',''),'-','') = '25599999901'

     

     

    Wednesday, April 09, 2008 1:17 PM