SSMS
 sql >> Base de Dados >  >> Database Tools >> SSMS

como selecionar a linha de dados de um campo de valor separado por vírgula


Nunca é bom usar os valores separados por vírgula para armazenar no banco de dados, se for viável, tente fazer tabelas separadas para armazená-los, pois provavelmente isso é 1:n relação.

Se isso não for viável, existem as seguintes maneiras possíveis de fazer isso. Se o número de valores a serem correspondidos permanecer o mesmo, você pode querer fazer a série de Like declaração junto com OR/AND dependendo de sua exigência.

Ex.-
WHERE
    Media LIKE '%21%'
    OR Media LIKE '%30%'
    OR Media LIKE '%40%' 

No entanto, a consulta acima provavelmente capturará todos os valores que contêm 21 mesmo que colunas com valores como 1210 ,210 também será devolvido. Para superar isso, você pode fazer o seguinte truque que dificulta o desempenho, pois usa funções em where cláusula e isso vai contra a criação de Pesquisável consultas. Mas aqui vai,
--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 + ',%'

Se o número de valores a serem correspondidos for alterado, talvez você queira examinar FullText Index e você deve pensar no mesmo. E se você decidir seguir com isso depois de Fulltext Index você pode fazer como abaixo para obter o que deseja,

Ex.-
WHERE 
     CONTAINS(Media, '"21" OR "30" OR "40"')