オラクル - セグメンテーション機能のスプリットスプリット文字列

文字列のセグメンテーションと抽出

分割

作成 または 交換する 機能Get_StrArrayLength 
  av_str VARCHAR2- スプリット文字列に 
  av_split VARCHAR2   - 区切り文字
を返す 
IS 
  lv_str VARCHAR21000 ;)
  lv_length 番号;
 開始
  :lv_strを= LTRIMRTRIM (av_str)); 
  lv_length:=を0 ;
   一方 InStr関数(lv_str、av_split)<> 0 ループ
     lv_length:=lv_length + 1 ; 
     lv_str:= SUBSTR(lv_str、INSTR(lv_str、av_split)+ 長さ(av_split)、長さ(lv_str))。
  エンドループ; 
  lv_length:= lv_length + 1 リターンlv_length。
終了 Get_StrArrayLengthを。

エキス

作成 または 交換する 機能をGet_StrArrayStrOfIndex 
  av_str VARCHAR2- スプリット文字列に 
  av_split VARCHAR2- 区切り 
  av_index  - 最初のいくつかの要素を取る
を返す VARCHAR2は
IS 
  lv_str VARCHAR21024 ); 
  lv_strOfIndex VARCHAR21024 ); 
  lv_length ;
 始める
  lv_str:= LTRIMRTRIM(av_str))。
  lv_str:=連結(lv_str、av_split)。
  lv_length:= av_index。
  もし lv_length = 0  次いで
      lv_strOfIndex:= SUBSTR(lv_str、1、INSTR(lv_str、av_split)- 長さ(av_split))。
  
      lv_length:= av_index + 1 ; 
     lv_strOfIndex:= SUBSTR(lv_str、INSTR(lv_str、av_split、1、av_index)+長さ(av_split)、INSTR(lv_str、av_split、1、lv_length)- INSTR(lv_str、av_split、1、av_index)- 長さ(av_split)) ;
  終了し た場合返す  lv_strOfIndexを。
終了 Get_StrArrayStrOfIndexを。

「文字列を指定して」スプリットに「対象文字列」、および結果のテーブル構造を返します

CREATE  OR  REPLACE TYPEのstr_splitはIS  TABLE  OF  VARCHAR24000 );
CREATE  OR  REPLACE  FUNCTIONの splitstrを(p_string 、IN  VARCHAR2を p_delimiter、、IN  VARCHAR2 RETURNがstr_split 
    PIPELINED 
AS 
    v_lengthの    NUMBER= LENGTH(p_stringを)。
    V_STARTの     NUMBER=  1 ; 
    v_index     NUMBER ;
BEGIN 
    WHILE(V_START <=v_length)
    LOOPの
        v_index:= INSTR(p_string、p_delimiter、V_START)。

        IF v_index =  0 
        THEN 
            PIPEのROW(SUBSTR(p_string、V_START))。
            V_START:= v_length +  1 ELSE 
            PIPEの ROW(SUBSTR(p_string、V_START、v_index - V_START))。
            V_START:= v_index +  1 END  IF ;
    END LOOP; 

    RETURN ;
ENDの splitstr。

 

参考文献:

https://www.cnblogs.com/telwanggs/p/9248082.html

おすすめ

転載: www.cnblogs.com/jeremywucnblog/p/12356887.html