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.
Olá Fabiano,
gostaria de complementar o artigo acima indicando um outro código para validar o cpf a ser inserido na base, garantindo assim uma maior consistência dos dados armazenados.
Segue o link para o artigo:
http://vitorhansen.blogspot.com/2011/07/validar-cpf-mysql.html
Abs
Fabiano bom dia,
Muito bom seu código. Gostaria de expressar aqui minha gratidão.
Olá Sidymar,
Muito obrigado por seu feedback.
Grande abraço.
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
Olá Blog Programação,
Isso ai, muito obrigado pela contribuição.
Grande abraço.
Muito bom. Obrigado por compartilhar!
Olá Caio,
Eu que agradeço o feedback.
Grande abraço.