Função para formatar CPF no MySQL

O Cadastro de Pessoa Física, popular CPF, além de outros documentos pessoais são únicos para cada pessoa, e todos possuem um formato especifico.

Os documentos de identidade possuem uma formatação especifica para cada unidade federativa, não sendo possível especificar um formato padrão.

Mas o CPF é um documento Federal, logo, podemos estipular seu formato padrão, vamos a ele:

###.###.###-##

Este é o formato utilizado, mas lhe pergunto, este é o valor que você esta armazenado no seu banco de dados?

Creio que não, mas para apresentar o cpf no formato mas amigável em nossos sistemas, precisamos do auxílio da função abaixo.

 DELIMITER $  
 CREATE FUNCTION `fun_formata_cpf`(p_cpf varchar(20)) RETURNS varchar(14) CHARSET utf8  
 BEGIN  
 declare l_ret varchar(14);  
 -- Retirando possiveis formatacoes no valor recebido.  
 set p_cpf = replace(p_cpf,'.','');  
 set p_cpf = replace(p_cpf,'-','');  
 set p_cpf = replace(p_cpf,' ','');  
 set p_cpf = trim(p_cpf);  
 -- Armazenando o valor recebido em uma variavel interna  
 set l_ret = p_cpf;  
 -- Montando a formatacao  
 set l_ret = concat(mid(l_ret,1,3),'.',mid(l_ret,4,3),'.',mid(l_ret,7,3),'-',mid(l_ret,10,2));  
 -- Retornando o resultado  
 return l_ret;  
 END  

Como de praste, vamos explicar.

1º – A função tem como parâmetro de entrada um valor alfanumerico, com 20 posições, aqui representado pelo p_cpf.

2º – Declaro a variável l_ret que apresentará o resultado final, ou seja, o cpf formatado.

3º – Retiro possíveis caracteres existêntes no parâmetro de entrada.

4º – Seto a variável l_ret para receber o valor já manipulado do parâmetro de entrada p_cpf.

5º – Seto a variável l_ret com ela mesma, realizando uma concatenação das posições.
No caso, uso o mid para separar os grupos, e concatena-los com os pontos e o traço, mas também podemos utilizar o substring, que tem o mesmo efeito do mid.

6º – Retorno a função o resultado final, o cpf formatado.

Com a função acima, você pode realizar uma derivação, prepando-a para formatar também CNPJ, que assim como o cpf, possui formato padrão.

Função criada através do MySQL Workbench 5.2.35 CE – Revisão 7915

Espero mais uma vez ter sido útil, um grande abraço e até a próxima.

7 comentários em “Função para formatar CPF no MySQL”

  1. para CNPJ ficou:

    BEGIN
    declare l_ret varchar(21);
    — Retirando possiveis formatacoes no valor recebido.
    set p_cnpj = replace(p_cnpj,'.','');
    set p_cnpj = replace(p_cnpj,'-','');
    set p_cnpj = replace(p_cnpj,' ','');
    set p_cnpj = trim(p_cnpj);
    set p_cnpj = replace(p_cnpj,'/','');
    — Armazenando o valor recebido em uma variavel interna
    set l_ret = p_cnpj;
    — Montando a formatacao
    set l_ret = concat( mid(l_ret,1,2),'.',mid(l_ret,3,3),'.',mid(l_ret,6,3),'/',mid(l_ret,9,4),'-',mid(l_ret,13,2) );
    — Retornando o resultado
    return l_ret;
    END

    Responder

Deixe um comentário