mysqlのfind_set_inを達成するために、Oracleの機能


機能の置き換えまたはF_FIND_IN_SET作成(piv_str1 VARCHAR2、VARCHAR2 piv_str2、p_sep VARCHAR2:= '')
RETURN数は
  l_idx番号:= 0; -区切りpiv_str2位置算出する
  STR VARCHAR2(500)と、 -パーティション文字ストリング取ら
  piv_strのVARCHAR2(500):= piv_str2 ; - 割り当てpiv_str2 piv_strに
  RES番号:= 0; -返す結果
  res_place番号:= 0; -ターゲット文字列内の元の文字列の位置
BEGIN
-フィールドがNULLである場合は0戻り
IF THEN piv_str2あるNULL
  戻りRES;
END IF;
-ない区切りpiv_strがない場合、及び直接決意piv_str1 piv_strは等しく、等しい1 = res_place。
IF InStr関数(piv_str、p_sep ,. 1 )= 0 THEN
   IF THEN piv_str = piv_str1
      。res_place:= 1;
      RES = res_place;
   END IF;
ELSE
 -セパレータpiv_strによって撮影されたサイクル
LOOP
    l_idx:= InStr関数(piv_str、p_sep);
    -
    res_place:+ = res_place 1;
    -場合がpiv_strセパレータとき
      IF l_idx> 0 THEN
      -最初のデリミタフィールドSTR前に採取
         STR:= SUBSTR(piv_str ,. 1 ,. 1- l_idx);
         -分析およびpiv_str1 STRが等しく、ループ端部が等しい判断する
         場合は、STR = piv_str1
           RES = res_place;
           EXIT;
         END IF;
        piv_str:= SUBSTR(piv_str、l_idx長さ+ (p_sep));
      ELSE
      -取ら不在piv_str後デリミタは、同じpiv_strとpiv_str1等しいres_path = RESか否かが判断される
        IfはTHEN piv_str = piv_str1
           RES = res_place;
        ; END IF
        -かかわらずかどうかの最終等しいです私たちは、ループの外にある
        EXIT;
      END IF;
 END LOOP;
 -サイクルの終了
 END IF;
 -戻り値は、RES
 RETURN RESを;
END F_FIND_IN_SET。

おすすめ

転載: www.cnblogs.com/vofill/p/11803137.html