ホームページ >データベース >mysql チュートリアル >効率的な SQL クエリのために区切り文字で区切られた VARCHAR 列を分割する方法

効率的な SQL クエリのために区切り文字で区切られた VARCHAR 列を分割する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 17:55:09746ブラウズ

How to Split a Delimited VARCHAR Column for Efficient SQL Queries?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。