Det är aldrig bra att använda kommaseparerade värden för att lagra i databasen om det är möjligt, försök att skapa separata tabeller för att lagra dem eftersom detta troligen är 1:n förhållande.
Om detta inte är genomförbart finns det följande möjliga sätt att göra detta. Om antalet värden som ska matchas kommer att förbli oförändrade, kanske du vill göra serien Like uttalande tillsammans med OR/AND beroende på dina krav.
Ex.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
Men ovanstående fråga kommer sannolikt att fånga alla värden som innehåller 21 så även om kolumner med värden som 1210 ,210 kommer också att returneras. För att övervinna detta kan du göra följande knep som hämmar prestandan eftersom den använder funktioner i where klausul och det går emot att göra Segbar
queries.Men nu är det,
--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 + ',%'
Om antalet värden som ska matchas kommer att ändras kanske du vill titta på Fulltextindex
och du bör tänka på detsamma. Och om du bestämmer dig för att gå med detta efter Fulltext Index du kan göra enligt nedan för att få vad du vill ha,
Ex.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')