정보 마스킹 처리
- 실무에서 회원 이름을 마스킹 할 일이 생겼다. ( 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의 시작위치와 종료위치를 변경하면 휴대폰 번호도 마스킹 가능하다!
'IT > SQL' 카테고리의 다른 글
[Oracle DB SQL] 동의어(SYNONYM) (0) | 2021.06.01 |
---|---|
[Oracle DB SQL] 시퀀스(SEQUENCE)/생성/조회/CURRVAL/INCREMENT BY (0) | 2021.06.01 |
[Oracle DB SQL] 뷰(VIEW)생성/읽기전용/삭제/ROLLBACK /COMMIT (0) | 2021.06.01 |
[Oracle DB SQL] 무결성/기본키/외래키/고유키/CHECK/NOT NULL/무결성 삭제 (0) | 2021.05.31 |
[Oracle DB SQL] 테이블 수정하기/테이블명 변경/ 컬럼 추가/컬럼 수정/ 컬럼 삭제/휴지통 비우기 (0) | 2021.05.31 |