ホームページ >データベース >mysql チュートリアル >効率的な SQL クエリのために区切り文字で区切られた VARCHAR 列を分割する方法
SQL で VARCHAR 列を複数の値に分割する
問題:
値を取得するときIN 句を使用して VARCHAR 列から、Oracle は区切り文字で区切られたリストを一重引用符で囲まれた文字列により、サブクエリが個々の値と一致するのを防ぎます。
解決策 1:
使用したのと同じ区切り文字で IN 句内の区切りリストの値をラップします。 VARCHAR 列。たとえば、AD_Ref_List.Value IN ('CO','VO') を使用する代わりに、AD_Ref_List.Value IN (',' || 'CO' || ',' || 'VO' || ',') を使用します。 .
解決策 2 (代替の Where 句):
通常の句を使用するREGEXP_SUBSTR 関数を使用した式ベースの手法で、指定したレベルで区切られたリストから個々の値を抽出します。たとえば、次のクエリは再帰を使用して区切りリストを分割します:
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 サイトの他の関連記事を参照してください。