Oracle
 sql >> Database >  >> RDS >> Oracle

È possibile interrogare una colonna separata da virgole per un valore specifico?

Puoi, usando LIKE. Non vuoi trovare una corrispondenza per valori parziali, quindi dovrai includere le virgole nella tua ricerca. Ciò significa anche che dovrai fornire una virgola in più per cercare i valori all'inizio o alla fine del testo:

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

Ma questa query sarà lenta, così come tutte le query che utilizzano LIKE, in particolare con un carattere jolly iniziale.

E c'è sempre un rischio. Se ci sono spazi attorno ai valori, o i valori possono contenere virgole stesse, nel qual caso sono racchiusi tra virgolette (come nei file CSV), questa query non funzionerà e dovrai aggiungere ancora più logica, rallentando la tua query ancora di più.

Una soluzione migliore sarebbe aggiungere una tabella figlio per queste categorie. O meglio anche una tabella separata per le categorie, e una tabella che le collega a YourTable.