ORACLE에서 전화번호를 저장할 때 하이픈 없이 숫자만 저장되는 경우가 많습니다.
대부분의 경우 전화번호를 조회하고 잘 보이게 하이픈을 다시 넣어야 합니다.
오라클 10g 이상버전에서 정규식 함수(REGEXP_REPLACE)로 전화번호 형식을 쉽게 변경할 수 있습니다.
휴대폰 번호만 있으면
WITH temp_table AS (
SELECT '01023456789' tel_no FROM dual UNION ALL
SELECT '0114567890' tel_no FROM dual UNION ALL
SELECT '0161234567' tel_no FROM dual
)
SELECT tel_no
, REGEXP_REPLACE(tel_no, '(.{3})(.+)(.{4})', '\1-\2-\3') tel_no2
FROM temp_table
=>REGEXP_REPLACE(tel_no, ‘(문자열 앞 3자리)(나머지 문자열)(문자열 뒤 4자리)’, ‘\1-\2-\3’)
휴대폰 번호는 (3자리 + (3자리 또는 4자리) + 4자리) 형식입니다.
일반전화번호 + 휴대폰번호
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
=>REGEXP_REPLACE(tel_no, ‘(특수지역번호(02) 또는 문자열의 처음 3자리)(나머지 문자열)(문자열 뒤 4자리)’, ‘\1-\2-\3’)
서울지역번호(02)를 제외한 모든 전화번호의 첫자리는 3자리입니다.
예외 번호에 지역 번호가 있는 경우 02|0505|~~~를 추가하면 됩니다.