diff --git a/function_mascara_cpf_lgpd.sql b/function_mascara_cpf_lgpd.sql new file mode 100644 index 0000000..7e28a8b --- /dev/null +++ b/function_mascara_cpf_lgpd.sql @@ -0,0 +1,27 @@ +-- drop function if exists public.mascara_cpf_lgpd(TEXT) +CREATE OR REPLACE FUNCTION public.mascara_cpf_lgpd(in_cpf TEXT) +RETURNS TEXT AS $$ +DECLARE + clean_cpf TEXT; + result TEXT; +BEGIN + + clean_cpf := regexp_replace(in_cpf, '[^0-9]', '', 'g'); + + IF char_length(clean_cpf) <> 11 THEN + RAISE EXCEPTION 'CPF inválido. Deve conter 11 dígitos.'; + END IF; + + result := substring(clean_cpf FROM 1 FOR 3) || '.XXX.XXX-' || substring(clean_cpf FROM 10 FOR 2); + + RETURN result; +END; +$$ LANGUAGE plpgsql; + + + + + + + +