본문 바로가기

IT 관련 정리

[오라클 SQL] 내가 원하는 형태로 전화번호 데이터 추출하기

반응형

전화번호가 디비에 형식이 제각각으로 저장되어 있는 경우가 종종있다. 예를들면 아래와 같은 형식들이다.

010-1111-1111

01011111111

082-10-1111-1111

+082-10-1111-1111

+82-10-1111-1111

이렇게 저장되어 있는 데이터를 010-1111-1111 형태로 정리해서 한 번에 추출하는 쿼리 CASE WHEN을 사용해서 짜봤다.

SQL을 잘하지 않기 때문에 좋은 답안이라고 생각하지는 않지만, 내가 짤 수 있는 최선이다.

 

SELECT user_name,

CASE WHEN cell_phone_no LIKE '+82-10%' THEN REPLACE(cell_phone_no,'+82-10','010')

     WHEN cell_phone_no LIKE '82-10%' THEN REPLACE(cell_phone_no,'82-10','010')

     WHEN cell_phone_no LIKE '+082-10%' THEN REPLACE(cell_phone_no,'+082-10','010')

     WHEN cell_phone_no LIKE '82-010%' THEN REPLACE(cell_phone_no,'82-010','010')

     WHEN cell_phone_no LIKE '+82-010%' THEN REPLACE(cell_phone_no,'+82-010','010')

ELSE cell_phone_no END AS cell_phone_no

FROM TABLE

 

- 하이픈이 없는 전화번호에 하이픈 붙이는 쿼리

SELECT user_name

CASE WHEN cell_phone_no NOT LIKE '%-%' THEN REGEXP_REPLACE(cell_phone_no, '(.{3})(.+)(.{4})', '\1-\2-\3')

ELSE cell_phone_no END AS cell_phone_no

FROM TABLE

반응형