connected by
の「乱用」(Colin't Hartが言ったように) ここには良い目的があります:REGEXP_SUBSTR
を使用する 4つの一致(23、34、45、56)のうち1つだけを抽出できます:正規表現[^,]+
カンマを含まない文字列内の任意の文字シーケンスに一致します。
実行してみる場合:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+') as "token"
FROM DUAL
23
を取得します 。
実行してみる場合:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,1) as "token"
FROM DUAL
23
も取得します それだけで、2つの追加パラメータも設定します。 :位置1(デフォルト)を探し始め、最初のオカレンスを返します。
実行しましょう:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,2) as "token"
FROM DUAL
今回は34
を取得します (2回目)3
を使用 最後のパラメータは45
を返すため など。
再帰的なconnected by
の使用 level
と一緒に 関連するすべての結果を確実に受け取るようにします(ただし、必ずしも元の順序である必要はありません):
SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1
戻ります:
TOKEN
23
34
45
56
これには、4つの結果すべてが含まれるだけでなく、結果セット内の個別の行に分割されます!
いじる場合 一緒に-それはあなたに主題のより明確な見方を与えるかもしれません。