sql >> Databasteknik >  >> RDS >> Mysql

Söka efter en kolumn som innehåller CSV-data i en MySQL-tabell för att se om det finns indatavärden

Först och främst ska databasen givetvis inte innehålla kommaseparerade värden, men du är förhoppningsvis medveten om detta redan. Om tabellen var normaliserad kunde du enkelt hämta objekten med en fråga som:

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

Du kan matcha strängarna i de kommaseparerade värdena, men det är inte särskilt effektivt:

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


  1. PL/SQL - Exempel på höjning av applikationsfel

  2. Konstigt och irriterande fel:Anrop till odefinierad funktion mysql_query()

  3. Hur SHOW CHARACTER SET fungerar i MariaDB

  4. Relation mellan katalog, schema, användare och databasinstans