INSTR 문자열 함수

7425 단어 문자열 함수

       INSTR (원본 문자열, 대상 문자열, 시작 위치, 일치 번호)
Oracle / PLSQL 에서 인 스 터 함 수 는 원본 문자열 에 있 는 문자열 의 위 치 를 되 돌려 줍 니 다.한 번 만 검색 하면 문자 의 시작 부터 문자 의 끝 까지 끝 난 다 는 것 이다.
문법 은 다음 과 같다.
  
instr( string1, string2 [, start_position [, nth_appearance ] ] )

매개 변수 분석:
  
string1:    ,         。
  string2:   string1       .
  start_position:   string1          。     ,       1.       1  。       ,        ,       ,      ,                    。
  nth_appearance:            string2.      ,    ,    1.          。

주의:
String 2 가 String 1 에서 찾 지 못 하면 인 스 터 함 수 는 0 으로 돌아 갑 니 다.
예시:
  SELECT instr('syranmo','s') FROM dual; --    1
  SELECT instr('syranmo','ra') FROM dual;  --    3
  SELECT instr('syran mo','a',1,2) FROM dual;  --    0

(조건 에 따라 a 는 한 번 만 나타 나 고 네 번 째 매개 변수 2 는 두 번 째 a 의 위치 가 나타 나 기 때문에 두 번 째 는 다시 나타 나 지 않 았 기 때문에 결 과 는 0 으로 돌아 갑 니 다. 빈 칸 도 한 글자 로 계산 하 는 것 을 주의 하 세 요!)
  SELECT instr('syranmo','an',-1,1) FROM dual;  -- 돌아오다
(오른쪽 에서 왼쪽으로 세 더 라 도 색인 의 위 치 는 'an' 의 왼쪽 첫 번 째 자모의 위 치 를 봐 야 하기 때문에 여기 서 4 로 돌아 갑 니 다)
  SELECT instr('abc','d') FROM dual;  -- 되돌아가다
주: 이 함 수 를 이용 하여 String 1 에 String 2 가 포함 되 어 있 는 지 확인 할 수 있 습 니 다. 0 으로 돌아 가면 포함 되 지 않 음 을 표시 합 니 다. 그렇지 않 으 면 포함 되 어 있 음 을 표시 합 니 다.
내 가 쓴 코드 몇 개:
[1].
select instr(a.name,',',1,1)+1 AA1,
      instr(a.name,',',1,2)+1 AA2,
      instr(a.name,',',1,3)+1 AA3,
      instr(a.name,',',1,4)+1 AA4,
      instr(a.name,',',1,5)+1 AA5
from(select ',  ,  ,  ,    ,D8,   ,    ,   ,      ,  ' as name from dual) a;

AA1 AA2 AA3 AA4 AA5
--- --- --- --- ---
  2   5   8  11  16 

[2]. WHERE 조건 이 대량으로 모호 하 게 일치 합 니 다.
with keywords_table as(
  select 1 id,'  ,  ,  ,    ,D8,   ,    ,   ,      ,  ,14 ,  ,  ,  ,D7,    ,    D8' Name from dual
)
select a.id,
  substr(','||a.name||',',
          instr(','||a.name,',',1,b.rn)+1,
          instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
    )name
from keywords_table a,
  (  select rownum rn from dual
     connect by rownum<100
    )b
where length(a.name)-length(replace(a.name,','))+1 >= b.rn

ID NAME                                                                
-- ------------------------
 1                                                                     
 1                                                                     
 1                                                                     
 1                                                                    
 1 D8                                                                    
 1                                                                    
 1                                                                    
 1                                                                    
 1                                                                  
 1                                                                     
 1 14                                                                   
 1                                                                     
 1                                                                     
 1                                                                     
 1 D7                                                                    
 1                                                                    
 1     D8                                                             

     17   
select sitename from(
    select siContent.sitename,keyList.name
    from (select sitename from site_info where rownum<=100) siContent,(
        with keywords_table as(
          select 1 id,'  ,  ,  ,    ,D8,   ,    ,   ,      ,  ,14 ,  ,  ,  ,D7,    ,    D8' Name from dual
        )
        select a.id,
          substr(','||a.name||',',
                  instr(','||a.name,',',1,b.rn)+1,
                  instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
            )name
        from keywords_table a,
          (  select rownum rn from dual
             connect by rownum<100
            )b
        where length(a.name)-length(replace(a.name,','))+1 >= b.rn
    ) keyList
    where siContent.sitename like ('%'||keyList.name||'%')
)group by sitename;

SITENAME
---------------------
         1
      2
      D7
       D7
           2
             D8
           D8
    D7
      D7
       D7
            D7
        3
          14 M1
               1
             2
         2
       D9
           D7
        D7
         3
       2
        D9
        D8
        1
      D8
      D7
        D7
            D9
      1
        D9
        D8
        3
       D7
           2
        D8
          6 M1
          11 M1
         D7
         D8
      D9
        D7
         D8
       D8
        D8
          2
          2 M1
      D8
         D7
         D7
          A B1F  M7
      D8
         D8
        D8
          3
         3
         D6
         D8
        D7
         D9
         D9
         D7
        2
          D8
        D8
         2

    65   

[3].. 한 줄 의 모 열 을 MO그룹 은 여러 개의 모 를 여러 줄 로 나 누 었 다.몇 개 있 으 면 몇 줄 로 나 누 어 라.
execute immediate 'insert into cy_runtime_log(ID,PROCEDURE_NAME)values(cy_runtime_log_SEQ.nextval,''cy_three_cg_bpc_diptg_result begin'')'; commit;
insert into cy_three_cg_bpc_diptg_result(TTIME,TG,BSC,MO,  64K   ,  64K   ,  16K   ,  16K   )
with keywords_table as(select rownum as id,MO as NAME,length(MO)-length(replace(MO,',')) as MO_LEN,
         TTIME,TG,BSC,MO,  64K   ,  64K   ,  16K   ,  16K   
  from cy_bpc_cg_dip_tg
  where tg in ('RXOTG-200','RXOTG-98')
)
select --a.id,
      a.TTIME,a.TG,a.BSC,
      substr(','||a.name||',',
            instr(','||a.name,',',1,b.rn)+1,
            instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
      )name,
      a.  64K   ,a.  64K   ,a.  16K   ,a.  16K   
from keywords_table a,
  (  select rownum rn from dual
     connect by rownum<100
    )b
where MO_LEN >= b.rn;


좋은 웹페이지 즐겨찾기