Nunca es bueno usar los valores separados por comas para almacenarlos en la base de datos, si es factible, intente hacer tablas separadas para almacenarlos, ya que lo más probable es que sea 1:n
relación.
Si esto no es factible, existen las siguientes formas posibles de hacerlo. Si la cantidad de valores para hacer coincidir va a permanecer igual, entonces es posible que desee hacer la serie de Like
instrucción junto con OR/AND
dependiendo de su requerimiento.
Ej.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
Sin embargo, es probable que la consulta anterior capture todos los valores que contienen 21
así que incluso si las columnas con valores como 1210
,210
también será devuelto. Para superar esto, puede hacer el siguiente truco que obstaculiza el rendimiento, ya que usa funciones en where
y eso va en contra de hacer Seargable
consultas.Pero aquí va,
--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 + ',%'
Si la cantidad de valores para hacer coincidir va a cambiar, es posible que desee buscar en Índice de texto completo
y deberías pensar en lo mismo. Y si decides seguir con esto después del Fulltext Index
puede hacer lo siguiente para obtener lo que desea,
Ej.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')