MySQL/SQL Máscara para CEP, RG, CPF, CNPJ, Telefone entre outros dados
- maio 23, 2017
- Programação
- 5 comentários
Escrevi uma função SQL para aplicar máscara em campos/valores como CEP, RG, CPF, CNPJ, Telefone, Celular, Data, Hora ou qualquer outro formato seguindo a estrutura da função. Também funciona com Oracle, MySQL, SQL Server e PostgreSQL.

## Apagando a função se já existe DROP FUNCTION IF EXISTS MASK; ## Criando a função DELIMITER // CREATE FUNCTION MASK(val VARCHAR(100), mask VARCHAR(100)) RETURNS VARCHAR(100) DETERMINISTIC BEGIN DECLARE maskared VARCHAR(100) DEFAULT ""; DECLARE k INT DEFAULT 0; DECLARE i INT DEFAULT 0; WHILE i < CHAR_LENGTH(mask) DO SET i = i + 1; IF SUBSTRING(mask, i, 1) = '#' THEN IF k < CHAR_LENGTH(val) THEN SET k = k+1; SET maskared = CONCAT(maskared, SUBSTRING(val, k, 1)); END IF; ELSE IF i < CHAR_LENGTH(mask) THEN SET maskared = CONCAT(maskared, SUBSTRING(mask, i, 1)); END IF; END IF; END WHILE; RETURN maskared; END; // DELIMITER ;
Testando a função de mascara em SQL
Depois de criada a função, podemos executar a seguinte query para testa-la.
## Testando a função SELECT MASK("12345123", "#####-###") AS cep, MASK("121231231", "##.###.###-#") AS rg, MASK("1212312312", "##.###.###-##") AS cpf, MASK("12123123123412", "##.###.###/####-##") AS cnpj, MASK("1212341234", "(##) ####-####") AS telefone, MASK("12123451234", "(##) #####-####") AS celular FROM dual;
Deixe nos comentários o que achou e acompanhe o site para ficar por dentro das atualizações.
Tags: Mascara para MySQL / SQL, Mascara para qualquer coisa, Formatar CEP, RG, CNPJ, CPF no MySQL, Pontuanção RG e CPF com SQL.
5 comentários Postar um comentário


Adriano Moura agosto 26, 2019
Muito bom, me salvou aqui. seria legal fazer esta mesma função pra outros bancos como Sqlite, PostgreSQL, Oracle e etc.

prezadoline fevereiro 28, 2020
Excelente solução. E se eu tiver no mesmo campo o celular e o fixo?

Flávio março 27, 2020
Faça uma condicional IF para verificar a quantidade de números e aplique a máscara de acordo. Se você estiver usando MySQL faça isso com a função CHARACTER_LENGTH() ou CHAR_LENGTH(). Essa função retorna o número de caracteres.

Postar um comentário
