정보 마스킹 처리

 

- 실무에서 회원 이름을 마스킹 할 일이 생겼다. ( EX : 이름 → 이*, 이름이 → 이*이, 이름이다  이**다) 

 

SELECT
    IFNULL(
        CASE WHEN CHAR_LENGTH(name) > 2
             THEN CONCAT(SUBSTRING(name, 1, 1),LPAD('*', CHAR_LENGTH(name) - 2, '*'), SUBSTRING(NAME, CHAR_LENGTH(name), CHAR_LENGTH(name)))
             ELSE CONCAT(SUBSTRING(name, 1, 1),LPAD('*', CHAR_LENGTH(name) - 1, '*'))
        END, ''") AS mask_name
FROM 테이블명;

데이터의 길이가 가변적이기 때문에 CASE 문을 사용하여 변환.

CONCAT으로 문자열 합치기.

SUBSTRING으로 문자열 자르기.

LPAD를 사용하여 왼쪽으로 *으로 밀어주기!

 

위와 같은 방식으로 SUBSTRING의 시작위치와 종료위치를 변경하면 휴대폰 번호도 마스킹 가능하다!

 

+ Recent posts