Usuário com melhor resposta
CPF/CNPJ

Pergunta
-
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.
Respostas
-
Bom dia Fabio, o segredo é utilizar a função REPLACE,
Segue um exemplo com seus dados.
Code Snippetcreate
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 -
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 SnippetDeclare
@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 -
Fabio,
Respondendo a sua dúvida em relação ao Where:
Code SnippetDeclare
@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
@DocumentosWhere
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
@DocumentosWhere
Replace(Replace(Documento,'.',''),'-','') = '25599999901'
Todas as Respostas
-
Bom dia Fabio, o segredo é utilizar a função REPLACE,
Segue um exemplo com seus dados.
Code Snippetcreate
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 -
-
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 SnippetDeclare
@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 -
Fabio,
Respondendo a sua dúvida em relação ao Where:
Code SnippetDeclare
@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
@DocumentosWhere
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
@DocumentosWhere
Replace(Replace(Documento,'.',''),'-','') = '25599999901'