sql >> Databasteknik >  >> RDS >> Oracle

Är det möjligt att fråga en kommaseparerad kolumn för ett specifikt värde?

Det kan du genom att använda GILLA. Du vill inte matcha för partiella värden, så du måste inkludera kommatecken i din sökning. Det betyder också att du måste ange ett extra kommatecken för att söka efter värden i början eller slutet av din text:

select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'

Men den här frågan kommer att vara långsam, liksom alla frågor som använder LIKE, särskilt med ett ledande jokertecken.

Och det finns alltid en risk. Om det finns mellanslag runt värdena, eller om värden kan innehålla kommatecken själva, i vilket fall de är omgivna av citattecken (som i csv-filer), kommer denna fråga inte att fungera och du måste lägga till ännu mer logik, vilket saktar ner din fråga ännu mer.

En bättre lösning skulle vara att lägga till en underordnad tabell för dessa kategorier. Eller snarare till och med en separat tabell för kategorierna, och en tabell som korslänkar dem till YourTable.



  1. ORACLE SQL listagg funktion

  2. Exportera tabell från databas till csv-fil

  3. Länka till eller importera data från Salesforce

  4. Skickar flera värden i en enda parameter