Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggunakan LIKE dalam klausa Oracle IN

Apa yang akan berguna di sini adalah LIKE ANY predikat seperti yang tersedia di PostgreSQL

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

Sayangnya, sintaks itu tidak tersedia di Oracle. Anda dapat memperluas predikat perbandingan terukur menggunakan OR , namun:

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

Atau sebagai alternatif, buat semi join menggunakan EXISTS predikat dan struktur data array tambahan (lihat pertanyaan ini untuk detailnya):

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
)

Untuk pencarian teks lengkap yang sebenarnya, Anda mungkin ingin melihat 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 PL/SQL - Tingkatkan Pengecualian Buatan Pengguna Dengan SQLERRM Kustom

  2. Fungsi SQRT() di Oracle

  3. Apakah ada cara terbaik untuk menghindari eksekusi proses lebih dari sekali di Oracle?

  4. Oracle Text tidak akan berfungsi dengan NVARCHAR2. Apa lagi yang mungkin tidak tersedia?

  5. Oracle:Bagaimana cara mengetahui apakah ada transaksi yang tertunda?