정규식 처리 0 1 1,322

by 아침 [SQL Query] REGEXP_REPLACE [2022.04.15 18:41:02]


안녕하세요

정규식 관련해서 질문있어 올립니다.

ex)

SELECT REGEXP_REPLACE(SUBSTR(TEL_NO, 1, LENGTH(TEL_NO) -4) || DECODE(TEL_NO, NULL,'','****'),'(02|.{3})(.+)(.{4})','\1-\2-\3') AS TEL_NO

FROM 테이블 

결과

010-1234-****

02-345-****

이런식으로 처리 되는데

정규식으로 지역번호가 없을 경우에 처리를 어떻게 해야되는지 궁금합니다..

현재는 case when 조건을 통해 문자열 길이별로 처리하고는 있습니다.

by 마농 [2022.04.18 08:30:28]
WITH t AS
(
SELECT '01012345678' tel_no FROM dual
UNION ALL SELECT '023456789'   FROM dual
UNION ALL SELECT '05123456789' FROM dual
UNION ALL SELECT '12345678'    FROM dual
UNION ALL SELECT '1234567'     FROM dual
)
SELECT tel_no
     , LTRIM(REGEXP_REPLACE(tel_no
       , '(02|031|032|033|041|042|043|044|051|052|053|054|055|061|062|063|064'
          || '|010|011|016|017|018|019'
          || '|030|050|060|070|080)?(.+)(....)'
       , '\1-\2-****'
       ), '-') tel_no_
  FROM t
;

 

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