티스토리 뷰

구분자로 문자열을 잘라와야 되는 경우가 있습니다. 전화번호 포맷이나 날짜포맷 문자열에서 해당 자리수 값을 가져오는 식인데 오라클 9버전 이전에 개발자들은 INSTR 함수를 이용해서 문자열을 잘라야 했습니다.


대충

SELECT SUBSTR(tel, 1, INSTR(TEL, '-', 1, 1) -1) AS S1
      , SUBSTR(tel, INSTR(TEL,'-', 1, 1)+1, INSTR(tel, '-', 1, 2) - INSTR(tel, '-', 1, 1) -1) AS S2
      , SUBSTR(tel, INSTR(tel, '-', 1, 2)+1) AS S3   
  FROM ( SELECT '02-2222-3333' AS tel FROM DUAL )

뭐 이런식이였기에 간단한 기능인데 쿼리가 복잡해지는 문제가 있었죠. 저도 예전에는 이런식으로 쿼리를 작성했던 기억이 납니다.

그런데 오라클 버전이 10g로 넘어오면서 정규표현식을 활용할 수 있게 되면서 훨씩 간단하게 쿼리를 작성할 수 있게 되었습니다.

 SELECT REGEXP_SUBSTR(tel, '[^-]+', 1, 1) AS S1       
       , REGEXP_SUBSTR(tel, '[^-]+', 1, 2) AS S2       
       , REGEXP_SUBSTR(tel, '[^-]+', 1, 3) AS S3       
       , REGEXP_SUBSTR(tel, '[^-]+$', 1, 1) AS S3_1 /* 뒤에서부터 */    
   FROM (SELECT '02-2222-3333' AS tel FROM DUAL)


문법은 다음과 같습니다.

REGEXP_SUBSTR(대상문자열, 정규표현식, 시작위치, 찾은순번)



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday