전화번호 형식을 체크하여,
최종적으로는 전화번호 포맷에 맞혀서 데이터를 뽑으려고 합니다.
검색해보니, 아래와 같은 정규식으로 구현이 가능한 듯 한데..
문제는 1588-xxxx 등의 전화번호는 아래 정규식으로 처리가 안되는 것 같습니다.
위 조건을 만족하도록, 아래 쿼리 수정해 주셔도 되고,
새 쿼리 만들어주셔도 됩니다.
꼭 좀 도움 부탁드리겠습니다.
감사합니다!!
WITH temp_table AS (
SELECT '027891234' tel_no FROM dual UNION ALL
SELECT '0314567890' tel_no FROM dual UNION ALL
SELECT '01023456789' tel_no FROM dual
)
SELECT tel_no
, REGEXP_REPLACE(tel_no, '(02|.{3})(.+)(.{4})', '\1-\2-\3') tel_no2
FROM temp_table
정규식 하나로 다 커버되진 않을 것 같은데..case로 분기하면 되지 않을까요?
WITH temp_table AS ( SELECT '027891234' tel_no FROM dual UNION ALL SELECT '0314567890' tel_no FROM dual UNION ALL SELECT '01023456789' tel_no FROM dual UNION ALL SELECT '15880001' tel_no FROM dual ) SELECT tel_no , CASE WHEN SUBSTR(tel_no, 1, 1) = '0' THEN REGEXP_REPLACE(tel_no, '(02|.{3})(.+)(.{4})', '\1-\2-\3') WHEN SUBSTR(tel_no, 1, 1) = '1' THEN REGEXP_REPLACE(tel_no, '(1544|1566|1577|1588)([0-9]{4})', '\1-\2') END tel_no2 FROM temp_table
WITH temp_table AS ( SELECT '027891234' tel_no FROM dual UNION ALL SELECT '0314567890' FROM dual UNION ALL SELECT '03234567890' FROM dual UNION ALL SELECT '01023456789' FROM dual UNION ALL SELECT '15771234' FROM dual ) SELECT tel_no , REGEXP_REPLACE(REGEXP_REPLACE(tel_no , '^(02|0..)', '\1-') -- 맨 앞자리가 02 이거나 0xx 인 거 찾아서 뒤에 - 붙여주고 , '(....)$' , '-\1') -- 맨 뒷자리 4개 앞에 - 붙여주기 AS tel_no2 FROM temp_table ;