CPF/CNPJ sem formatação

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Uma necessidade mais complicada:

Tem lá uma tabela com CPF/CNPJ formatado, e tem em outra somente número.
Como fazer o relacionamento?

Ou melhor... como converter um CPF/CNPJ pra somente números?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Este seria o ideal, mas só tem no MySQL 8.0
Acaba removendo tudo que não seja número.
SELECT REGEXP_REPLACE( CDCNPJ, '[^0-9]', '' ) FROM JPCADASTRO
No MySQL 5.7, resta o REPLACE, que não é tão eficiente, caso tenha algum lixo no campo
SELECT REPLACE( REPLACE( REPLACE( CDCNPJ, '/','' ), '.', '' ), '-', '' ) FROM JPCADASTRO
Pois é... chegando a algumas rotinas com exceção ao que seria normal...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

CPF/CNPJ sem formatação

Mensagem por Mario Mesquita »

Bom dia a todos e feliz ano novo.

Quintas, vc está usando o MySQL 5.7? Ela roda bem com o Harbour?

Esse ano quero retomar meus estudos de MySQL visando uma migração dos DBFs para SQL. Nem por não gostar dos DBFs, me atende muito bem mas te limita ao mundo xBase, para uso em outras ferramentas, é tudo SQL. Então é bom saber o básico e ir migrando com segurança.

Abraço a todos,
Mario.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Mario Mesquita escreveu:Quintas, vc está usando o MySQL 5.7? Ela roda bem com o Harbour?
Estou usando MySQL por ADO, qualquer MySQL funciona bem com Harbour.

Uma coisa importante:

No mundo Harbour, o ODBC/conector mais usado é 3.51, porque os neguinhos acham fácil de instalar - não precisa run-time do Visual C.
ESSE DÁ PROBLEMAS CONFORME O COMANDO.

https://dev.mysql.com/doc/relnotes/conn ... -3-51.html
odbc351.png
odbc53.png
odbc80.png
NÃO confundir versão do conector ODBC com a versão do servidor MySQL.
ODBC é pra conexão, e acho que todos funcionam com qualquer versão do servidor MySQL.
O 3.51, por exemplo, não tem reconexão automática.

E já confirmei na prática: tem comando que funciona normalmente no conector 5.3, mas dá erro no 3.51

Em termos de servidor, fui sempre instalando o mais moderno, mas o último instalado foi o 5.7. Depois dele tem o 8.0
E em termos de conector, parei no 5.3, só pra não ter que atualizar em todos os clientes novamente. Depois dele tem o 8.0
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Faltou completar, pra quem não está acostumado:

Uma coisa é usar o MySQL do Harbour, e outra coisa é o ADO.

No MySQL do Harbour:

O Harbour, por default, não vém com mysql gerado, depende de downloads adicionais.
o Harbour fica preso à DLL, precisa gerar um Harbour com a DLL, compilar o aplicativo com essa DLL, e distribuir com essa DLL.
Tem que ser exatamente a mesma em todas as etapas, desde a geração até a distribuição.

No ADO:

Qualquer Harbour serve.
No aplicativo tem o texto indicando a versão: 5.3 por exemplo.
Vai instalar o ODBC 5.3 nos clientes.

Versão do servidor MySQL para qualquer dos casos:

tanto faz, não importa nem mesmo se o servidor MySQL está no Windows, no Linux, na internet, na própria máquina, etc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

CPF/CNPJ sem formatação

Mensagem por Mario Mesquita »

Olá!

Então, Quintas, eu já li seus tutoriais de ADO e ODBC e vou reler pra pegar o jeito de preparar pra ficar bacana.

Confesso que é meio confuso pra quem só usa DBF, mas como vc diz, é questão de prática.

Primeiro, aprender a fazer aqui, depois instalar pra rodar em cliente. Mas vejo vantagens, se fizer certinho.

Sem SQL não se aprende nada fora de xBase e quero conhecer outras ferramentas, embora me sinta à vontade com o Harbour.

Vou tentar então a 5.7, já que roda normal com a linguagem. Agradecido pela dica.

Abraço,
Mario.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Mario Mesquita escreveu:Então, Quintas, eu já li seus tutoriais de ADO e ODBC e vou reler pra pegar o jeito de preparar pra ficar bacana.
Confesso que é meio confuso pra quem só usa DBF, mas como vc diz, é questão de prática.
Talvez pra se acostumar:

Instale o ODBC de ADS e trabalhe com DBF, pra ir se acostumando.
Já vai sentir muita diferença.

A sintaxe do ADS pra DBF é igual do SQL Server, talvez a principal diferença, pra quem tá começando é sobre selecionar um único registro.
No MySQL: SELECT * FROM tabela LIMIT 1
No ADS/SQL Server: SELECT TOP 1 * FROM jptabela

A vantagem de começar pelo ADS é que não vai precisar instalar servidor nem nada adicional, a não ser o ODBC de ADS.
E.... ADO é igual pra qualquer base de dados, seja MySQL ou o DBF do ADS.
Vai se surpreender com a velocidade.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

CPF/CNPJ sem formatação

Mensagem por Mario Mesquita »

Boa tarde a todos.

Quintas, obrigado pelas dicas. Muito interessante mesmo.

Abraço e obrigado.

Saudações,
Mario.
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

CPF/CNPJ sem formatação

Mensagem por Marcos Kieron »

Simples:

CNPJ = CHARREM('/.-',CNPJ)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Marcos Kieron escreveu:Simples:
CNPJ = CHARREM('/.-',CNPJ)
Seria... se existisse.

Sei que poderia criar a função no MySQL... ou atualizar para o MySQL 8 e ter a REGEX...
Mas por enquanto estou me limitando ao básico, até eliminar DBF de vez.
Por enquanto é na base do.... funcionou... fica assim até a próxima revisão...
Anexos
mysql.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

CPF/CNPJ sem formatação

Mensagem por Marcos Kieron »

Simples, use o Harbour.
Varra o BD e faça a remoção em PRG depois grave em outra coluna o campo limpo, depois remova a coluna com problema, e se for o caso mude o nome da coluna nova para o nome antigo, se precisar.
Isso vai levar uns 5 segundos? talvez?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

CPF/CNPJ sem formatação

Mensagem por JoséQuintas »

Marcos Kieron escreveu:Simples, use o Harbour.Varra o BD e faça a remoção em PRG depois grave em outra coluna o campo limpo, depois remova a coluna com problema, e se for o caso mude o nome da coluna nova para o nome antigo, se precisar.
Isso vai levar uns 5 segundos? talvez?
O problema está resolvido.
Se eu fosse alterar a tabela, com certeza eu usaria exatamente esse comando pra fazer o UPDATE, instantâneo e sem PRG.
Justamente quero manter o conteúdo oficial original
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

CPF/CNPJ sem formatação

Mensagem por Marcos Kieron »

Que bom, qualquer pede ajuda novamente
Responder