티스토리 뷰
구분자로 문자열을 잘라와야 되는 경우가 있습니다. 전화번호 포맷이나 날짜포맷 문자열에서 해당 자리수 값을 가져오는 식인데 오라클 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(대상문자열, 정규표현식, 시작위치, 찾은순번)
'지식정보' 카테고리의 다른 글
ORACLE LAG, LEAD 함수 활용하기 (0) | 2017.02.15 |
---|---|
Tistory 에 SyntaxHighlighter 적용하기 (0) | 2017.02.15 |
windows7 에서 텔넷 클라이언트 사용하기 (0) | 2017.01.19 |
bat 스크립트 상에서 루프문 (0) | 2017.01.19 |
리눅스, 유닉스에서 .svn 폴더 찾아서 지우기 (0) | 2016.12.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday