아래 질문사항을 보다가 호기심에 한번 생각해 봤습니다
사용자 정보중 성명 필드가 하나인경우 화면 출력시에 이름만 (성은 정상출력) 가려줄경우 어떻게 하면 좋을까?
라는 생각이 들었습니다.
일반적으로 이름은 성(1자리) + 이름(2자리) 이지만, 2자리 이상의 성을 가진 사람도 있고 이름도 긴경우가
많아서 이름만 가리고 보여주는 것에 대해 저는 아래와 같이 생각해 봤는데 뭔가 깔끔해 보이지가 않아서
다른 분들은 어떻게 생각할까 하고 올려 봅니다.
저는 성의 경우 2자리 이상의 성은 별도로 관리하고 그외는 전부 1자리 성이라는 가정하에 짜봤습니다.
WITH T1 AS( SELECT '김이' FAMILY_NAME FROM DUAL UNION ALL SELECT '황보' FAMILY_NAME FROM DUAL ), T2 AS ( SELECT '홍길동' NAME FROM DUAL UNION ALL SELECT '황보서' NAME FROM DUAL UNION ALL SELECT '김이남' NAME FROM DUAL UNION ALL SELECT '황보길동' NAME FROM DUAL UNION ALL SELECT '홍길북' NAME FROM DUAL ) SELECT CASE WHEN ( SELECT COUNT(*) FROM T1 WHERE REGEXP_LIKE(T2.NAME, '^' || T1.FAMILY_NAME ) ) >= 1 THEN RPAD( SUBSTR(T2.NAME, 0, ( SELECT LENGTH(T1.FAMILY_NAME) FROM T1 WHERE REGEXP_LIKE(T2.NAME, '^' || FAMILY_NAME ) ) ) ,LENGTH(T2.NAME)+2, '*') ELSE RPAD(SUBSTR(T2.NAME, 0, 1), LENGTH(T2.NAME)+1, '*') END NAME1 FROM T2