ホームページ > データベース > mysql チュートリアル > 部分文字列一致のために SQL で区切り文字付き VARCHAR 列を分割するにはどうすればよいですか?

部分文字列一致のために SQL で区切り文字付き VARCHAR 列を分割するにはどうすればよいですか?

DDD
リリース: 2024-12-26 08:03:11
オリジナル
704 人が閲覧しました

How to Split a Delimited VARCHAR Column in SQL for Substring Matching?

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, '[^,]+' )
);
ログイン後にコピー

考慮事項:

  1. パフォーマンスとデータの要件に最適なアプローチを選択してください。 .
  2. 列の値と区切りリストの両方が一貫して同じ形式であることを確認します。区切り文字。
  3. 再利用可能にしてメンテナンスを容易にするために、ストアド プロシージャまたは関数を使用して分割ロジックをカプセル化することを検討してください。

以上が部分文字列一致のために SQL で区切り文字付き VARCHAR 列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート