[오라클] 전화번호 포맷 변경 쿼리

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|~~~를 추가하면 됩니다.