안녕하세요.
마스킹 관련 질문 드립니다.
요구사항은 '전체 길이의 절반 (딱 떨어지지 않으면 반올림)길이 뒷부분을 * 처리' 입니다.
근데, 한자, 일어, 아랍어 등은 rpad 때문에 잘리거나 공백이 들어거나 하는데 어떻게 해야 할지 모르겠습니다. lengthb, substrb 다 써봐도 도대체 되질 않아서 조언을 구합니다.
이름이 하기처럼 있다고 가정하면, 가능할까요??
한자 : 韓國語 (길이 : 3이고 절반의 반올림이 2이므로 韓國*)
아랍어 : منصور بن زايد آل نهيان (길이 : 22이고 절반의 반올림이 11이므로 이건 대략....*****منصور بن زايد )
일어 : デジタルフォト (길이 : 7이고 절반의 반올림이 4이므로 デジタル***)
답변 부탁드립니다.
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 ;