SQL で VARCHAR 列を複数の値に分割する
目標は、VARCHAR 列 AD_Ref_List.Value を、以下に基づいて複数の値に分割することです。別のテーブル、具体的には xx_insert.XX_DocAction_Next に保存されている値。ただし、Oracle が区切り文字で区切られたリストの値を単一の文字列として解釈するという問題が発生し、クエリで行が返されなくなりました。
この問題を解決するには、クエリを変更して値の前後に区切り文字を含めることができます。 IN 句に含めて、Oracle がそれらを比較用の個々の値として認識できるようにします。さらに、LIKE 演算子を使用して、AD_Ref_List.Value の値が区切り文字で囲まれたリストの部分文字列であるかどうかを確認できます (区切り文字で囲まれた場合も)。
これらの変更を組み込んだ改訂されたクエリを次に示します。
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;
値を区切り文字で囲むことにより、このクエリは VARCHAR 列を効果的に複数の値に分割し、次の値に基づいて結果をフィルタリングできるようになります。他のテーブルの値。
このクエリは目的の機能を提供する可能性がありますが、最も効率的なアプローチではない可能性があることに注意してください。複雑さとパフォーマンスの問題が発生する可能性があるため、SQL で区切りリストを操作するのは可能な限り避けることが一般的に推奨されます。代わりに、配列や JSON オブジェクトなどのより適切なデータ構造を使用してデータを保存および操作することを検討してください。
以上がSQL で区切り文字を使用して VARCHAR 列を複数の値に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。