Het is nooit goed om de door komma's gescheiden waarden te gebruiken om in de database op te slaan. Als het haalbaar is, probeer dan aparte tabellen te maken om ze op te slaan, aangezien dit hoogstwaarschijnlijk 1:n
is. relatie.
Als dit niet haalbaar is, zijn er de volgende manieren waarop u dit kunt doen. Als uw aantal overeenkomende waarden hetzelfde blijft, wilt u misschien de reeks Like
doen statement samen met OR/AND
afhankelijk van uw behoefte.
Bijv.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
Bovenstaande zoekopdracht zal echter waarschijnlijk alle waarden vangen die 21
. bevatten dus zelfs als kolommen met waarden als 1210
,210
wordt ook teruggestuurd. Om dit te verhelpen, kun je de volgende truc doen die de uitvoering belemmert, omdat het functies gebruikt in where
clausule en dat gaat in tegen het maken van Seargable
queries. Maar hier gaat het,
--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 + ',%'
Als het aantal overeenkomende waarden gaat veranderen, kun je het beste kijken naar FullText Index
en u zou aan hetzelfde moeten denken. En als u besluit hiermee verder te gaan na Fulltext Index
je kunt het onderstaande doen om te krijgen wat je wilt,
Bijv.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')