Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

É possível consultar uma coluna separada por vírgulas para um valor específico?


Você pode, usando LIKE. Você não deseja corresponder valores parciais, portanto, será necessário incluir as vírgulas em sua pesquisa. Isso também significa que você terá que fornecer uma vírgula extra para pesquisar valores no início ou no final do seu texto:
select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'

Mas essa consulta será lenta, assim como todas as consultas usando LIKE, especialmente com um curinga inicial.

E há sempre um risco. Se houver espaços ao redor dos valores, ou os próprios valores podem conter vírgulas, nesse caso eles estão entre aspas (como em arquivos csv), essa consulta não funcionará e você terá que adicionar ainda mais lógica, tornando sua consulta mais lenta ainda mais.

Uma solução melhor seria adicionar uma tabela filho para essas categorias. Ou melhor, até mesmo uma tabela separada para as categorias e uma tabela que as vincula à YourTable.