Formatando CNPJ e CPF no Oracle com Regex

Tem dúvidas de como fazer para ir formatando CNPJ e CPF no Oracle? Aqui nós resolvemos e vamos te contar.

[ad#texto]

Seguindo a pedidos segue mais um pouco de Regex aplicado ao Oracle PL/SQL, veja que é tão simples como foi para aplicar máscara moeda no PL/SQL.

Formatando CNPJ e CPF no Oracle
Formatando CNPJ e CPF no Oracle

Uma das grandes dúvidas é uma forma simples e eficiente para impor uma máscara para variáveis contendo um CNPJ ou CPF, constantemente veja o uso de DECODE´s empilhados ou complicadas funções que contam caracter a caracter para então ir realizando a formatação escolhido, estes casos ou causam perda de performance ou ainda se tornam pequenos “monstros” difíceis de manter.

Veja o caso do CPF:

SELECT regexp_replace(LPAD(‘12543684261’, 11, '0'), '([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{2})','\1.\2.\3-\4') FROM dual

E no caso de um CNPJ:

SELECT regexp_replace(LPAD('1238524478912', 15, '0'),'([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{4})([0-9]{2})','\1.\2.\3/\4-\5') FROM dual

Nem são precisos demais comentários (se quiser pode verificar o que falamos anteriormente sobre Regex com PL/SQL), fica fácil identificar a divisão “em blocos” que fizemos com o Regex e em seguida sua métrica para formatar os dados.

Várias funções vão funcionar tanto no PL/SQL (packages, procedures, etc) como no Forms pois ambos são produtos da Oracle, porém em alguns casos funções não existirão no Forms, somente no PL/SQL, principalmente por diferenças entre versões.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.