function_mascara_cpf_lgpd.sql 530 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 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;