Ciò che sarebbe utile qui sarebbe un LIKE ANY
predicato come è disponibile in PostgreSQL
SELECT *
FROM tbl
WHERE my_col LIKE ANY (ARRAY['%val1%', '%val2%', '%val3%', ...])
Sfortunatamente, quella sintassi non è disponibile in Oracle. Puoi espandere il predicato di confronto quantificato utilizzando OR
, tuttavia:
SELECT *
FROM tbl
WHERE my_col LIKE '%val1%' OR my_col LIKE '%val2%' OR my_col LIKE '%val3%', ...
O in alternativa, crea un semi join usando un EXISTS
predicato e una struttura dati array ausiliaria (vedi questa domanda per i dettagli):
SELECT *
FROM tbl t
WHERE EXISTS (
SELECT 1
-- Alternatively, store those values in a temp table:
FROM TABLE (sys.ora_mining_varchar2_nt('%val1%', '%val2%', '%val3%'/*, ...*/))
WHERE t.my_col LIKE column_value
)
Per una vera ricerca full-text, potresti voler guardare Oracle Text:http://www.oracle.com/technetwork/database/enterprise-edition/index-098492.html