문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| dbms:oracle:devel:regexp:regexp_substr [2016/06/12 01:59] – [숫자/문자 분리] starlits | dbms:oracle:devel:regexp:regexp_substr [2025/10/03 22:30] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 19: | 줄 19: | ||
| starlits@adminschool.net starlits | 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, | ||
| 줄 74: | 줄 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; | ||
| </ | </ | ||
| 줄 95: | 줄 96: | ||
| SELECT | SELECT | ||
| | | ||
| - | , | + | , |
| - | , | + | , |
| - | , | + | , |
| - | , | + | , |
| FROM DV_ADDRESS_TEMP ; | FROM DV_ADDRESS_TEMP ; | ||
| </ | </ | ||
| 줄 108: | 줄 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(' | ||
| + | </ | ||