문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
dbms:oracle:devel:regexp:regexp_substr [2016/06/12 01:54] 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 ==== |
+ | |||
+ | | ||
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, | ||
- | </ | + | </ |
- | - 결과값 | + | |
STUDYUNITCODE TAPE SIDE | STUDYUNITCODE TAPE SIDE | ||
줄 25: | 줄 43: | ||
</ | </ | ||
+ | ==== 방법 2 ==== | ||
+ | - REGEXP_REPLACE 를 이용하여 숫자를 제외시킨다. < | ||
+ | with t as ( | ||
+ | select ' | ||
+ | union all | ||
+ | select ' | ||
+ | ) | ||
+ | select regexp_replace(tape, | ||
+ | from t; | ||
+ | </ | ||
+ | TAPE SIDE | ||
+ | -------------- | ||
+ | 01AB AB | ||
+ | 01BA BA | ||
+ | </ | ||
+ | - REGEXP_REPLACE 를 이용하여 문자를 제외시킨다. < | ||
+ | with t as ( | ||
+ | select ' | ||
+ | union all | ||
+ | select ' | ||
+ | ) | ||
+ | select regexp_replace(tape, | ||
+ | from t; | ||
+ | </ | ||
+ | TAPE SIDE | ||
+ | -------------- | ||
+ | 01AB 01 | ||
+ | 01BA 01 | ||
+ | </ | ||
===== 페이지정보 찾기 ===== | ===== 페이지정보 찾기 ===== | ||
- 페이지정보에서 첫페이지를 찾아서 알려준다. <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; | ||
</ | </ | ||
줄 49: | 줄 96: | ||
SELECT | SELECT | ||
| | ||
- | , | + | , |
- | , | + | , |
- | , | + | , |
- | , | + | , |
FROM DV_ADDRESS_TEMP ; | FROM DV_ADDRESS_TEMP ; | ||
</ | </ | ||
줄 62: | 줄 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(' | ||
+ | </ |