개발/DB

[PostgreSQL] 개인정보(이름 / 전화번호) 마스킹 처리

반응형

서론

PostgreSQL에서 개인정보를 sql에서 마스킹 처리를 하였는데 간단하게 정리하고자 한다.

* 소스는 as test 를 이용하여 확인

소스

-- 이름 : 한글 - 첫번째 3번째 문자 만 노출. 영문 - 앞 4자리만 노출.
select case when a.test ~ E'[ㄱ-ㅣ가-힣]'
       then concat(left(a.test,1), '*',substring(a.test,3,1),repeat('*',length(a.test) -3))
       else concat(left(a.test,4), repeat('*',length(a.test) -4))
       end as test1
from (select '홍길동' as test) a; //홀*동

-- 휴대전화
select concat(split_part(regexp_replace(replace(a.test,'-',''),'(.{3})(.+)(.{4})','\1-\2-\3'),'-',1),'-',
       repeat('*',length(split_part(regexp_replace(replace(a.test,'-',''),'(.{3})(.+)(.{4})','\1-\2-\3'),'-',2))),'-',
       split_part(regexp_replace(replace(a.test,'-',''),'(.{3})(.+)(.{4})','\1-\2-\3'),'-',3)) as test1
from (select '01012345678' as test) a; //010-****-5678

결론

보안을 위해 sql에서 마스킹 처리를 적용하게 되었는데 자주 사용하지 않아서 잊어버린다. 이렇게 정리하며 추후에 사용되길..

반응형