본문 바로가기

Server Oriented/DB-Oracle

SQL쿼리와 엑셀을 이용하여, 숫자에서 휴대폰 전화번호 구분 하거나 휴대폰 전화번호에서 숫자를 추출


전화번호에서 숫자를 추출하는 것은 비교적 쉽죠.
SQL 이라면..
select replace('012-3456-7890','-','') from dual;
엑셀이라면..
=substitute("012-3456-7890", "-", "")

데이타가 많을때..
SQL 이라면 임시 테이블을 하나 만들어서 전화번호를 주욱 업로드 한 다음,
select replace(phone_no,'-','') from table_a;
와 같이 전화번호가 업로드된 테이블 table_a 에서 전화번호 phone_no 를 replace 하면 됩니다.
엑셀이라면..
=substitute(cell_a_b,'-','')
와 같이 상대 좌표를 이용해서 주르륵 상기 산식을 입력해 넣으면 됩니다.

이제, 거꾸로 해 볼까요.. 사실 본 게시물을 남기는 이유는 혹시 이걸 잊어 버릴까봐서 입니다.. ^^>
숫자만으로 되어 있는 전화번호에 '-' 문자를 넣는 것이죠.
SQL 이라면..
select substr('01234567890',1,3)||'-'||                                 -- 첫번째 블럭은 3자리입니다. 유선전화는 확인 못해요.
         substr('01234567890',4,length('01234567890')-7)||'-'||  -- 두번째 블럭은 3~4자리 입니다.
         substr('01234567890',length('01234567890')-3,4)            -- 세번째 블럭은 4자리 입니다.
  from dual;
두번째 블럭은, 4번째 숫자부터 추출하면 되는데..
숫자 문자열의 갯수에서 첫번째 블럭 3자리와 세번째 블럭 4자리 도합 7개를 제외한 숫자를 뽑아 오면 됩니다.
세번째 블럭은, 숫자 문자열 전체 갯수에서 3번째 왼쪽에 있는 수부터 4개를 가져오면 됩니다.
엑셀이라면..
=LEFT(A1,3)&"-"&MID(A1,4,LEN(A1)-7)&"-"&RIGHT(A1,4)

데이타가 많을때는, 숫자를 추출해 낼때와 동일한 방식으로 하면 되겠습니다.