문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
dbms:oracle:devel:regexp:regexp_substr [2016/06/12 02:25] starlits [숫자/문자 분리] |
dbms:oracle:devel:regexp:regexp_substr [2019/03/05 00:40] (현재) starlits [구분자로 나누기] |
||
---|---|---|---|
줄 4: | 줄 4: | ||
- 오라클 정규표현식의 일종. | - 오라클 정규표현식의 일종. | ||
+ | ===== 이메일 아이디 분리 ===== | ||
+ | - 이메일형식에서 아이디와 메일도메인 부분을 분리하여 조회한다. < | ||
+ | with t as ( | ||
+ | select ' | ||
+ | ) | ||
+ | SELECT email | ||
+ | , | ||
+ | , | ||
+ | FROM t | ||
+ | ; | ||
+ | </ | ||
+ | EMAIL ID | ||
+ | ------------------------ ------------------------ ------------------------ | ||
+ | starlits@adminschool.net starlits | ||
+ | </ | ||
+ | - [[dbms: | ||
+ | - [[dbms: | ||
===== 숫자/ | ===== 숫자/ | ||
==== 방법 1 ==== | ==== 방법 1 ==== | ||
- | - STUDYUNITCODE를 숫자와 문자를 분리하여 나타낸다. (맨 앞에 0은 삭제한다.) < | + | - STUDYUNITCODE를 숫자와 문자를 분리하여 나타낸다. (맨 앞에 0은 삭제한다.) < |
SELECT | SELECT | ||
STUDYUNITCODE, | STUDYUNITCODE, | ||
- | REGEXP_SUBSTR(REGEXP_REPLACE(STUDYUNITCODE, | + | REGEXP_SUBSTR(REGEXP_REPLACE(STUDYUNITCODE,' |
- | REGEXP_SUBSTR(STUDYUNITCODE, | + | REGEXP_SUBSTR(STUDYUNITCODE,' |
FROM TB_STUDYUNIT | FROM TB_STUDYUNIT | ||
ORDER BY KWON, | ORDER BY KWON, | ||
줄 58: | 줄 75: | ||
- 페이지정보에서 첫페이지를 찾아서 알려준다. <code sql> | - 페이지정보에서 첫페이지를 찾아서 알려준다. <code sql> | ||
- | SELECT SOURCE, REPLACE(REGEXP_SUBSTR(SOURCE, | + | SELECT SOURCE, REPLACE(REGEXP_SUBSTR(SOURCE,' |
FROM QUESTION WHERE ROWNUM < 10; | FROM QUESTION WHERE ROWNUM < 10; | ||
</ | </ | ||
줄 79: | 줄 96: | ||
SELECT | SELECT | ||
| | ||
- | , | + | , |
- | , | + | , |
- | , | + | , |
- | , | + | , |
FROM DV_ADDRESS_TEMP ; | FROM DV_ADDRESS_TEMP ; | ||
</ | </ | ||
줄 92: | 줄 109: | ||
| 충남 태안군 태안읍 동문리 529-2 | 충남 | 태안군 | 태안읍 동문리 529-2 | 529-2 | | | 충남 태안군 태안읍 동문리 529-2 | 충남 | 태안군 | 태안읍 동문리 529-2 | 529-2 | | ||
| 충남 태안군 태안읍 동문리 879-3 | 충남 | 태안군 | 태안읍 동문리 879-3 | 879-3 | | | 충남 태안군 태안읍 동문리 879-3 | 충남 | 태안군 | 태안읍 동문리 879-3 | 879-3 | | ||
+ | |||
+ | ===== 구분자로 나누기 ===== | ||
+ | - 숫자를 기준으로 나눈다 <code sql> | ||
+ | with tt as ( | ||
+ | select ' | ||
+ | ) | ||
+ | select | ||
+ | | ||
+ | , | ||
+ | , | ||
+ | from tt; | ||
+ | </ | ||
+ | - 결과값 < | ||
+ | A1 A A3 | ||
+ | --- - ----- | ||
+ | 147 1 36126 | ||
+ | </ | ||
+ | |||
+ | - 공백으로 나눈다 <code sql> | ||
+ | with v_time as ( | ||
+ | select '2016. 1. 29. 오후 11: | ||
+ | ) | ||
+ | select | ||
+ | time | ||
+ | , | ||
+ | || REGEXP_SUBSTR(time,' | ||
+ | || REGEXP_SUBSTR(time,' | ||
+ | , | ||
+ | || REGEXP_SUBSTR(time,' | ||
+ | || REGEXP_SUBSTR(time,' | ||
+ | from v_time; | ||
+ | </ | ||
+ | - 결과값 < | ||
+ | TIME | ||
+ | ------------------------ | ||
+ | 2016. 1. 29. 오후 11: | ||
+ | </ | ||
+ | |||
+ | ===== 전화번호 나누기 ===== | ||
+ | - 전화번호 구분자(-) 로 전화번호를 나눈다. <code sql> | ||
+ | with cust as ( | ||
+ | select ' | ||
+ | ) | ||
+ | select | ||
+ | REGEXP_SUBSTR(phone, | ||
+ | , REGEXP_SUBSTR(phone, | ||
+ | , REGEXP_SUBSTR(phone, | ||
+ | , REGEXP_SUBSTR(phone, | ||
+ | from cust; | ||
+ | </ | ||
+ | - 결과 < | ||
+ | STR STR2 STR3 LAST_STR | ||
+ | --- ---- ---- ---- | ||
+ | 010 1234 5678 5678 | ||
+ | </ | ||
+ | |||
+ | ==== 뒷자리 4자리만 가져오기 ==== | ||
+ | - 구분자없이 뒷자리 4자리만 가져오기 위해서는 regexp_substr 보다 substr 이 더 효과적이다. <code sql> | ||
+ | with cust as ( | ||
+ | select ' | ||
+ | ) | ||
+ | select substr(phone, | ||
+ | from cust; | ||
+ | </ | ||
+ | |||
+ | ===== 첫단어 가져오기 ===== | ||
+ | - 숫자/ | ||
+ | SELECT REGEXP_SUBSTR(' | ||
+ | </ | ||
+ | - 스페이스가 있기 전까지의 첫단어 <code sql> | ||
+ | SELECT REGEXP_SUBSTR(' | ||
+ | </ |