おそらくこれは1:n
であるため、データベースに格納するためにコンマ区切りの値を使用することは、それらを格納するために個別のテーブルを作成することを試みるのは決して良いことではありません。 関係。
これが不可能な場合は、次の方法でこれを行うことができます。一致する値の数が同じままである場合は、一連のLike
を実行することをお勧めします。 OR/AND
とともにステートメント 要件に応じて。
例-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
ただし、上記のクエリは、21
を含むすべての値をキャッチする可能性があります したがって、1210
のような値の列であっても 、210
また返されます。これを克服するには、where
の関数を使用するため、パフォーマンスを妨げる次のトリックを実行できます。 条項とそれは
--Declare valueSearch variable first to value to match for you can do this for multiple values using multiple variables.
Declare @valueSearch = '21'
-- Then do the matching in where clause
WHERE
(',' + RTRIM(Media) + ',') LIKE '%,' + @valueSearch + ',%'
一致する値の数が変更される場合は、フルテキストインデックス
Fulltext Index
の後でこれを使用することにした場合は、同じことを考える必要があります。 以下のようにして、必要なものを入手できます。
例-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')