문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
dbms:oracle:devel:regexp:regexp_substr [2013/05/11 20:40] starlits [숫자/문자 분리] |
dbms:oracle:devel:regexp:regexp_substr [2019/03/05 00:40] (현재) starlits [구분자로 나누기] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
- | ====== | + | ====== REGEXP_SUBSTR ====== |
- | ===== REGEXP_SUBSTR | + | ===== 정의 |
+ | - 오라클 정규표현식의 일종. | ||
- | ==== 숫자/ | + | ===== 이메일 아이디 분리 ===== |
+ | - 이메일형식에서 아이디와 메일도메인 부분을 분리하여 조회한다. < | ||
+ | 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 | ||
줄 24: | 줄 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; | ||
</ | </ | ||
줄 44: | 줄 92: | ||
</ | </ | ||
- | ==== 주소문자열 자르기 ==== | + | ===== 주소문자열 자르기 |
- 전체 주소에서 시도, | - 전체 주소에서 시도, | ||
SELECT | SELECT | ||
| | ||
- | , | + | , |
- | , | + | , |
- | , | + | , |
- | , | + | , |
FROM DV_ADDRESS_TEMP ; | FROM DV_ADDRESS_TEMP ; | ||
</ | </ | ||
줄 61: | 줄 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(' | ||
+ | </ |