Formatar CPF em SQL — PostgreSQL, MySQL e SQL Server
Funções SQL para aplicar e remover a máscara XXX.XXX.XXX-XX em CPFs armazenados como texto ou número nos três principais bancos de dados.
PostgreSQL
Aplicar máscara
Com OVERLAY e concatenação:
SELECT
OVERLAY(
OVERLAY(
OVERLAY(cpf PLACING '-' FROM 10)
PLACING '.' FROM 7)
PLACING '.' FROM 4)
FROM clientes;
Ou com CONCAT e SUBSTRING:
SELECT CONCAT(
SUBSTRING(cpf FROM 1 FOR 3), '.',
SUBSTRING(cpf FROM 4 FOR 3), '.',
SUBSTRING(cpf FROM 7 FOR 3), '-',
SUBSTRING(cpf FROM 10 FOR 2)
) AS cpf_formatado
FROM clientes;
Remover máscara
SELECT REPLACE(REPLACE(cpf_formatado, '.', ''), '-', '') AS cpf_limpo
FROM clientes;
Ou com regexp_replace:
SELECT regexp_replace(cpf_formatado, '\D', '', 'g') AS cpf_limpo
FROM clientes;
MySQL
Aplicar máscara
Com CONCAT e SUBSTRING:
SELECT CONCAT(
SUBSTRING(cpf, 1, 3), '.',
SUBSTRING(cpf, 4, 3), '.',
SUBSTRING(cpf, 7, 3), '-',
SUBSTRING(cpf, 10, 2)
) AS cpf_formatado
FROM clientes;
Com INSERT (insere caracteres nas posições):
SELECT INSERT(INSERT(INSERT(cpf, 10, 0, '-'), 7, 0, '.'), 4, 0, '.') AS cpf_formatado
FROM clientes;
Remover máscara
SELECT REPLACE(REPLACE(cpf_formatado, '.', ''), '-', '') AS cpf_limpo
FROM clientes;
SQL Server
Aplicar máscara
Com CONCAT e SUBSTRING:
SELECT CONCAT(
SUBSTRING(cpf, 1, 3), '.',
SUBSTRING(cpf, 4, 3), '.',
SUBSTRING(cpf, 7, 3), '-',
SUBSTRING(cpf, 10, 2)
) AS cpf_formatado
FROM clientes;
Com FORMAT (CPF armazenado como BIGINT):
SELECT FORMAT(cpf, '000\.000\.000\-00') AS cpf_formatado
FROM clientes;
Remover máscara
SELECT REPLACE(REPLACE(cpf_formatado, '.', ''), '-', '') AS cpf_limpo
FROM clientes;
Qual abordagem usar?
| Cenário | Recomendação |
|---|---|
CPF como CHAR(11) | CONCAT + SUBSTRING (funciona em todos) |
CPF como BIGINT | FORMAT (SQL Server) ou TO_CHAR (PostgreSQL) |
| Remover máscara | REPLACE encadeado (universal) |
| Limpeza em massa | regexp_replace (PostgreSQL) |
Dica: armazene o CPF sempre sem formatação (CHAR(11) ou VARCHAR(11)) e aplique a máscara apenas na exibição. Isso simplifica buscas, índices e validações. Para garantir que os dados estejam corretos antes de gravar, valide o CPF no momento do cadastro. Precisa de CPFs para testar essas queries? Use o gerador de CPF.
Veja também: formatar CPF no Excel.