Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на LIKE в клауза IN на Oracle

Това, което би било полезно тук, би било 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да форматирам своите заявки за Oracle, така че колоните да не се обвиват?

  2. Стойността на данните във времето

  3. База данни срещу пространство за таблици, каква е разликата?

  4. Предаване на масив към процедурата на Oracle от c#

  5. Как да стартирате Opatch в неинтерактивна форма