Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Używanie LIKE w klauzuli Oracle IN

Przydałby się tutaj znak LIKE ANY predykat dostępny w PostgreSQL

SELECT * 
FROM tbl
WHERE my_col LIKE ANY (ARRAY['%val1%', '%val2%', '%val3%', ...])

Niestety ta składnia nie jest dostępna w Oracle. Możesz rozszerzyć predykat porównania ilościowego za pomocą OR jednak:

SELECT * 
FROM tbl
WHERE my_col LIKE '%val1%' OR my_col LIKE '%val2%' OR my_col LIKE '%val3%', ...

Lub alternatywnie utwórz sprzężenie semi za pomocą EXISTS predykat i pomocnicza struktura danych tablicy (szczegóły w tym pytaniu):

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
)

Aby uzyskać prawdziwe wyszukiwanie pełnotekstowe, możesz zajrzeć do 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. Kod intensywnie korzystający z asynchronicznych operacji we/wy działa wolniej niż kod nieasynchroniczny, dlaczego?

  2. SQLT w 12c nie może zebrać statystyk

  3. ORA-12505, TNS:listener nie zna obecnie SID podanego w connect des

  4. Jak wyświetlić typ zmiennej w PL/SQL?

  5. Formularze Oracle w R12/R12.2