SQL で区切られた VARCHAR 列を複数の値に分割し、部分文字列一致を実行する方法
元のクエリは、「AD_Ref_List」をフィルタリングしようとしています「xx_insert」テーブルに格納されている値の区切りリストに基づくテーブル。ただし、Oracle はカンマ区切りの値を 1 つの文字列として扱うため、一致する行がありません。
この問題を解決するには、次のアプローチを検討してください。
文字列部分文字列一致を使用する区切り文字:
列の値と区切り文字で区切られたリストの両方を区切り文字で囲み、部分文字列を実行します マッチ。これにより、区切りリスト内で完全に一致するものが確実に見つかります。
SELECT r.Value FROM AD_Ref_List r INNER JOIN xx_insert x ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' ) WHERE r.AD_Reference_ID = 1000448 AND x.xx_insert_id = 1000283;
正規表現を使用して区切りリストを分割する:
区切りリストから個々の値を抽出する正規表現とサブクエリを使用します。次に、メイン クエリで値ベースの一致を実行します。
SELECT Value FROM AD_Ref_List WHERE AD_Reference_ID = 1000448 AND value IN ( SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL ) FROM xx_insert WHERE xx_insert_id = 1000283 CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' ) );
考慮事項:
以上が部分文字列一致のために SQL で区切り文字付き VARCHAR 列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。