2016-08-24 3 views
0

を存在する場合、私はPL/SQLでの新たなんだ、とレコードがテーブルに存在する場合のようなものをチェックし、古いプログラムからのコードを手に入れたチェックするリストを区切り以前はokでしたが、アプリケーションには検証するために500行以上ありました。すべてのコードをカンマで区切って文字列を渡したいと思います。プロシージャはループして、見つからないicodeをすべて返します。どんな助けでも大歓迎です。Oracleのループは、レコードが

+0

分割が別々の値に文字列が難しい部分になるだろう、あなたは使用できませんでした、それはネイティブ関数は、PL/SQLでのJavaScriptなどである方法ではないとして、コレクション? –

+0

'カンマ区切り文字列'句で選択するコードを表示 –

+0

はい私はコレクションを使用できます。コールはC#メソッドから来ているので、私はあらゆる種類のパラメータを作ることができます。 –

答えて

1

これを試してみてください:

select f1 
    into oretvalue 
    from t1 
where w1 = 'w1' 
    and code in 
     (select p_code 
      from (select level as id, 
         regexp_substr(icode, '[^,]+', 1, level) as p_code 
        from dual 
       connect by regexp_substr(icode, '[^,]+', 1, level) is not null)); 
+0

''[^、] +''(残念なことに区切られたリストを解析するのによく見られる)のREGEXは、NULL要素がある場合には失敗し、避けるべきです。 NULLを処理する代替手段については、http://stackoverflow.com/questions/25648653/regex-to-select-nth-value-from-a-list-allowing-for-nullsを参照してください。 –

+0

このリンクを共有すると、正規表現のより良い説明が得られます。http://stackoverflow.com/a/31464699/2543416 –

関連する問題