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.
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.