Es ist nie gut, die durch Kommas getrennten Werte zum Speichern in der Datenbank zu verwenden, wenn es möglich ist, versuchen Sie, separate Tabellen zu erstellen, um sie zu speichern, da dies höchstwahrscheinlich 1:n
ist Beziehung.
Wenn dies nicht machbar ist, gibt es folgende Möglichkeiten, dies zu tun:Wenn die Anzahl der abzugleichenden Werte gleich bleibt, sollten Sie die Reihe von Like
ausführen Anweisung zusammen mit OR/AND
je nach Anforderung.
Bsp.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
Die obige Abfrage wird jedoch wahrscheinlich alle Werte erfassen, die 21
enthalten also auch wenn Spalten mit Werten wie 1210
,210
wird auch zurückgeschickt. Um dies zu überwinden, können Sie den folgenden Trick anwenden, der die Leistung beeinträchtigt, da er Funktionen in where
verwendet Klausel und das widerspricht der Erstellung von durchsuchbar
Abfragen. Aber los geht's,
--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 + ',%'
Wenn sich die Anzahl der abzugleichenden Werte ändert, sollten Sie sich Volltextindex
und Sie sollten darüber nachdenken. Und wenn Sie sich dafür entscheiden, nach Fulltext Index
zu gehen Sie können wie folgt vorgehen, um zu bekommen, was Sie wollen,
Bsp.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')