마스킹 관련 질문드립니다. 0 2 885

by Yong [Oracle 기초] 마스킹 이름 개인정보 mask [2019.02.12 16:29:28]


안녕하세요.

마스킹 관련 질문 드립니다.

요구사항은 '전체 길이의 절반 (딱 떨어지지 않으면 반올림)길이 뒷부분을 * 처리'  입니다.

근데, 한자, 일어, 아랍어 등은 rpad 때문에 잘리거나 공백이 들어거나 하는데 어떻게 해야 할지 모르겠습니다. lengthb, substrb 다 써봐도 도대체 되질 않아서 조언을 구합니다.

 

이름이 하기처럼 있다고 가정하면,  가능할까요??

한자 : 韓國語 (길이 : 3이고 절반의 반올림이 2이므로 韓國*)

아랍어 : منصور بن زايد آل نهيان  (길이 : 22이고 절반의 반올림이 11이므로 이건 대략....*****منصور بن زايد )

일어 : デジタルフォト (길이 : 7이고 절반의 반올림이 4이므로 デジタル***)

 

답변 부탁드립니다.

by 마농 [2019.02.12 16:54:36]
WITH t AS
(
SELECT '韓國語' nm FROM dual
UNION ALL SELECT 'منصور بن زايد آل نهيان' FROM dual
UNION ALL SELECT 'デジタルフォト' FROM dual
UNION ALL SELECT 'gurubee.net' FROM dual
UNION ALL SELECT '구루비닷넷' FROM dual
)
SELECT nm
     , SUBSTR(nm, 1, CEIL(LENGTH(nm)/2)) || RPAD('*', FLOOR(LENGTH(nm)/2), '*') nm_mask
  FROM t
;

 


by Yong [2019.02.12 17:03:56]

와!!!!!!!!! 이렇게 간단하다니!!!! 정말 너무나 감사드립니다.

항상 많은 도움 받습니다. 좋은 하루 되세요!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입