select que retorno os 14 numeros do cnpj de cliente sem a mascara
Boa tarde!
Não consigo fazer um SELECT para mostrar todos os CNPJ dos clientes. No caso preciso de um select que mostre somente os 14 números do cnpj sem a mascara, somente os 14 numéricos.
Alguém pode me ajudar???
Não consigo fazer um SELECT para mostrar todos os CNPJ dos clientes. No caso preciso de um select que mostre somente os 14 números do cnpj sem a mascara, somente os 14 numéricos.
Alguém pode me ajudar???

Gustavo
Curtidas 0
Respostas

Marcos P
25/03/2015
Pesquise sobre a função REPLACE, ou alguma equivalente, no Postresql.
Em Sql Server, seria...
Em Sql Server, seria...
DECLARE @CNPJ char(18) set @CNPJ = '04.055.582/0004-58' select @CNPJ as Original, REPLACE(REPLACE(REPLACE( @CNPJ, '.', '' ),'/',''),'-','') as Convertido
GOSTEI 0

Jothaz
25/03/2015
Gravar as mascara dos campos vai contra as boas praticas.
O correto é gravar os campos somente com os valores e depois mascarar.
Mas com nem sempre bom senso e boas prátias são comuns tente algo assim:
Não tenho como testar no momento, mas talvez os exemplos lhe dê uma luz.
O correto é gravar os campos somente com os valores e depois mascarar.
Mas com nem sempre bom senso e boas prátias são comuns tente algo assim:
select translate('012.345.678-90','.-','') as cpf Ou SELECT to_number('09.876.543/1234-12','99 999 999 9999 99') Ou SELECT to_number('855.999.666-96',99999999999)
Não tenho como testar no momento, mas talvez os exemplos lhe dê uma luz.
GOSTEI 0

Gustavo
25/03/2015
Não deu certo, o pessoal esta usando a mesma tabela para cadastro de CPF e CNPJ, dai se tirar a mascara só ele traz tmb os CPFs
GOSTEI 0

Marcos P
25/03/2015
O que não deu certo ?
Se o seu problema é apenas selecionar o CNPJ para tratamento, inclua isso na query que busca os dados...
Se o seu problema é apenas selecionar o CNPJ para tratamento, inclua isso na query que busca os dados...
GOSTEI 0

Jothaz
25/03/2015
Você quer retornar somente os CNPJ´s?
Seja mais claro na elaboração da questão, senão fica difícil ajudar.
Seja mais claro na elaboração da questão, senão fica difícil ajudar.
GOSTEI 0

Gustavo
25/03/2015
desculpa, isso somente os cnpj's
GOSTEI 0

Marcos P
25/03/2015
Assumindo que os CNPJ´s ( com máscara ) tem SEMPRE 18 posições, é trivial colocar isso em uma query :
Outra possibilidade é incluir no "where" alguma outra coluna em que exista a definição do tipo de inscrição do cliente.
SELECT Coluna, REPLACE(REPLACE(REPLACE( Coluna, '.', '' ),'/',''),'-','') FROM Tabela WHERE length(Coluna) = 18
Outra possibilidade é incluir no "where" alguma outra coluna em que exista a definição do tipo de inscrição do cliente.
GOSTEI 0

Gustavo
25/03/2015
Obrigado a todos pela ajuda, consegui resolver meu problema, vcs são féras hehehehehe
GOSTEI 0