Това, което би било полезно тук, би било LIKE ANY
предикат, както е наличен в PostgreSQL
SELECT *
FROM tbl
WHERE my_col LIKE ANY (ARRAY['%val1%', '%val2%', '%val3%', ...])
За съжаление, този синтаксис не е наличен в Oracle. Можете да разширите количествено определения предикат за сравнение с помощта на OR
, обаче:
SELECT *
FROM tbl
WHERE my_col LIKE '%val1%' OR my_col LIKE '%val2%' OR my_col LIKE '%val3%', ...
Или като алтернатива, създайте полусъединяване с помощта на EXISTS
предикат и структура на спомагателния масив (вижте този въпрос за подробности):
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
)
За истинско търсене в пълен текст може да искате да разгледате Oracle Text:http://www.oracle.com/technetwork/database/enterprise-edition/index-098492.html