본문 바로가기

database

오라클 정규표현식을 이용한 전화번호 포맷팅

오라클 정규표현식중 REGEXP_REPLACE를 이용해서 다음과 같이 전화번호를 원하는 형태로 포맷팅 할 수 있습니다. 다음은 10G에서 돌아가는 쿼리입니다.

SELECT tel,

       REGEXP_REPLACE

         (REGEXP_REPLACE (tel, '[^[:digit:]]'),

          '(^02|050[[:digit:]]{1}|[[:digit:]]{3})([[:digit:]]{3,4})([[:digit:]]{4})', '\1-\2-\3') AS format_tel

FROM   (SELECT '025475847' AS tel FROM DUAL

        UNION ALL

        SELECT '0254475847' FROM DUAL

        UNION ALL

        SELECT '03144745847' FROM DUAL

        UNION ALL

        SELECT '0314474584' FROM DUAL

        UNION ALL

        SELECT '05054474584' FROM DUAL

        UNION ALL

        SELECT '050544745894' FROM DUAL

        UNION ALL

        SELECT '050611112222' FROM DUAL

        UNION ALL         

        SELECT '07055557777' FROM DUAL

        UNION ALL

        SELECT '0705557777' FROM DUAL

        UNION ALL

        SELECT '05177778888' FROM DUAL

        UNION ALL

        SELECT '051777788888' FROM DUAL

        UNION ALL

        SELECT '1111222233334' FROM DUAL);


핸드폰은 규칙이 간단하니 다음과 같이 더 쉽게 할 수 있습니다.

 

REGEXP_REPLACE(REGEXP_REPLACE (cellphone, '[^[:digit:]]'), '(^[[:digit:]]{3})([[:digit:]]{3,4})([[:digit:]]{4}$)', '\1-\2-\3')


 

'database' 카테고리의 다른 글

GROUPING SETS  (0) 2011.10.19
주민등록번호로 나이를 구하는 Query  (0) 2008.10.24
날짜 포함 비교 Query  (0) 2008.07.08
Database 버전 확인  (0) 2008.04.16
ORACLE에서 한글을 지원하는 캐릭터셋  (0) 2008.02.20