sql >> Databáze >  >> RDS >> Oracle

Použití LIKE v klauzuli Oracle IN

Co by zde bylo užitečné, by bylo LIKE ANY predikát, jak je dostupný v PostgreSQL

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

Bohužel tato syntaxe není v Oracle k dispozici. Kvantifikovaný predikát porovnání můžete rozšířit pomocí OR , nicméně:

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

Nebo alternativně vytvořte poloviční spojení pomocí EXISTS predikát a pomocná datová struktura pole (podrobnosti viz tato otázka):

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
)

Pro skutečné fulltextové vyhledávání se možná budete chtít podívat na Oracle Text:http://www.oracle.com/technetwork/database/enterprise-edition/index-098492.html



  1. Zábava s kompresí (columnstore) na velmi velkém stole – část 2

  2. ZOBRAZIT VŠE Data mezi dvěma daty; pokud pro konkrétní datum neexistuje žádný řádek, zobrazte ve všech sloupcích nulu

  3. Jak převést seznam oddělený čárkami na řádky na serveru SQL Server

  4. Rotační/kontingenční tabulka s agregací v Oracle