ホームページ >データベース >mysql チュートリアル >SQL Server でカンマ区切りの文字列内の値を効率的に検索するにはどうすればよいですか?

SQL Server でカンマ区切りの文字列内の値を効率的に検索するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-09 17:32:42774ブラウズ

How Can I Efficiently Search for Values Within Comma-Delimited Strings in SQL Server?

カンマ区切りの SQL Server 列内の特定の値の検索

SQL Server 2008 を使用している場合、カンマ区切りの値を含む列内で特定の値が存在する行を検索する必要がある場合があります。 課題は、文字列の完全な一致としてだけでなく、文字列内の任意の場所でこの値を見つけることにあります。

この問題を調べてみましょう:

  • サンプルテーブル:

    <code class="language-sql">  CREATE TABLE DelimitedValues (id INT, ColumnName VARCHAR(100));
      INSERT INTO DelimitedValues VALUES
      (1, 'Cat,Dog,Sparrow,Trout,Cow,Seahorse'),
      (2, 'Mouse');</code>
  • 目的: ColumnName に「Cat」や「Sheep」などの特定の値が含まれる行を特定します。

IN のような標準メソッドは、カンマ区切りリスト内に埋め込まれた値を処理できないため、不十分です。より洗練されたアプローチが必要です。

強力なソリューションでは、文字列の連結と LIKE 演算子を使用します。

<code class="language-sql">SELECT id
FROM DelimitedValues
WHERE (',' + RTRIM(ColumnName) + ',') LIKE '%,' + @search + ',%'</code>

この手法により、検索値 (@search) がカンマで囲まれるようになり、リスト内の位置に関係なく検出が可能になります。 例:

  • ColumnName は「猫、犬、雀、鱒、牛、タツノオトシゴ」を保持します
  • @search は「猫」
  • 結果: カンマ区切り文字列内に「Cat」が見つかったため、行 1 が返されます。

このメソッドは、リストの先頭、中間、または末尾の値、および単一値のエントリなど、すべてのケースを確実に処理します。

以上がSQL Server でカンマ区切りの文字列内の値を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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