사용자 도구

사이트 도구


dbms:oracle:devel:regexp:regexp_substr

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
dbms:oracle:devel:regexp:regexp_substr [2017/10/31 09:06]
starlits [뒷자리 4자리만 가져오기]
dbms:oracle:devel:regexp:regexp_substr [2019/03/05 00:40] (현재)
starlits [구분자로 나누기]
줄 25: 줄 25:
 ==== 방법 1 ==== ==== 방법 1 ====
  
-  - STUDYUNITCODE를 숫자와 문자를 분리하여 나타낸다. (맨 앞에 0은 삭제한다.) <code>+  - STUDYUNITCODE를 숫자와 문자를 분리하여 나타낸다. (맨 앞에 0은 삭제한다.) <code sql>
 SELECT   SELECT  
     STUDYUNITCODE,     STUDYUNITCODE,
-    REGEXP_SUBSTR(REGEXP_REPLACE(STUDYUNITCODE,\'^0\',\'\'),\'[[:digit:]]{1,2}\') TAPE, +    REGEXP_SUBSTR(REGEXP_REPLACE(STUDYUNITCODE,'^0',''),'[[:digit:]]{1,2}') TAPE, 
-    REGEXP_SUBSTR(STUDYUNITCODE,\'[[:alpha:]]{1}\') SIDE+    REGEXP_SUBSTR(STUDYUNITCODE,'[[:alpha:]]{1}') SIDE
 FROM TB_STUDYUNIT  FROM TB_STUDYUNIT 
 ORDER BY KWON,STUDYUNITCODE ORDER BY KWON,STUDYUNITCODE
줄 75: 줄 75:
  
   - 페이지정보에서 첫페이지를 찾아서 알려준다. <code sql>   - 페이지정보에서 첫페이지를 찾아서 알려준다. <code sql>
-SELECT SOURCE, REPLACE(REGEXP_SUBSTR(SOURCE,\'p[[:digit:]]{1,3}\'),\'p\',\'\') PAGE+SELECT SOURCE, REPLACE(REGEXP_SUBSTR(SOURCE,'p[[:digit:]]{1,3}'),'p','') PAGE
 FROM QUESTION WHERE ROWNUM < 10; FROM QUESTION WHERE ROWNUM < 10;
 </code> </code>
줄 96: 줄 96:
 SELECT  SELECT 
      ADDRESS      ADDRESS
-    ,REGEXP_SUBSTR(ADDRESS,\'[^ ]+\') AS SIDO +    ,REGEXP_SUBSTR(ADDRESS,'[^ ]+') AS SIDO 
-    ,REPLACE(REGEXP_SUBSTR(ADDRESS,\' +[^ ]+\'),\\',\'\') as GUGUN +    ,REPLACE(REGEXP_SUBSTR(ADDRESS,' +[^ ]+'),' ','') as GUGUN 
-    ,REPLACE(ADDRESS,REGEXP_SUBSTR(ADDRESS,\'[^ ]+\')||REGEXP_SUBSTR(ADDRESS,\' +[^ ]+\')||\\',\'\') AS etc +    ,REPLACE(ADDRESS,REGEXP_SUBSTR(ADDRESS,'[^ ]+')||REGEXP_SUBSTR(ADDRESS,' +[^ ]+')||' ','') AS etc 
-    ,REGEXP_SUBSTR(ADDRESS,\'[^ ]+(.)$\'   +    ,REGEXP_SUBSTR(ADDRESS,'[^ ]+(.)$'   
 FROM DV_ADDRESS_TEMP ; FROM DV_ADDRESS_TEMP ;
 </code> </code>
줄 125: 줄 125:
 --- - ----- --- - -----
 147 1 36126 147 1 36126
 +</code>
 +
 +  - 공백으로 나눈다 <code sql>
 +with v_time as (
 +    select '2016. 1. 29. 오후 11:00:53' as time from dual
 +)
 +select 
 +    time
 +    ,REGEXP_SUBSTR(time,'[^ ]+',1,1,'i'
 +    || REGEXP_SUBSTR(time,'[^ ]+',1,2,'i'
 +    || REGEXP_SUBSTR(time,'[^ ]+',1,3,'i') AS ymd
 +    ,TO_DATE(REGEXP_SUBSTR(time,'[^ ]+',1,1,'i'
 +    || REGEXP_SUBSTR(time,'[^ ]+',1,2,'i'
 +    || REGEXP_SUBSTR(time,'[^ ]+',1,3,'i'),'YYYY.fmMM.DD.') AS convert_time   
 +from v_time;
 +</code>
 +  - 결과값 <code>
 +TIME                       YMD              CONVERT_TIME       
 +------------------------   ---------------  -------------------
 +2016. 1. 29. 오후 11:00:53  2016.1.29.       2016-01-29 00:00:00
 </code> </code>
  
줄 153: 줄 173:
 from cust;   from cust;  
 </code> </code>
 +
 +===== 첫단어 가져오기 =====
 +  - 숫자/문자로만 이루어진 첫단어 <code sql>
 +SELECT REGEXP_SUBSTR('first-team second-team third-team', '[[:alnum:]]*') FROM dual;
 +</code> <code>first</code>
 +  - 스페이스가 있기 전까지의 첫단어 <code sql>
 +SELECT REGEXP_SUBSTR('first-team second-team third-team', '[^ ]+') FROM dual;
 +</code><code>first-team</code>
dbms/oracle/devel/regexp/regexp_substr.1509408395.txt.gz · 마지막으로 수정됨: 2017/10/31 09:06 저자 starlits