sql >> Base de Datos >  >> RDS >> Mysql

Buscar en una columna que contiene datos CSV en una tabla MySQL la existencia de valores de entrada

En primer lugar, la base de datos, por supuesto, no debe contener valores separados por comas, pero es de esperar que ya lo sepa. Si la tabla estuviera normalizada, podría obtener fácilmente los elementos mediante una consulta como:

select distinct i.Itemid
from Item i
inner join ItemFeature f on f.ItemId = i.ItemId
where f.Feature in ('AB', 'PQ')

Puede hacer coincidir las cadenas en los valores separados por comas, pero no es muy eficiente:

select Id
from Item
where
  instr(concat(',', Features, ','), ',AB,') <> 0 or
  instr(concat(',', Features, ','), ',PQ,') <> 0