Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sử dụng LIKE trong mệnh đề Oracle IN

Điều hữu ích ở đây sẽ là một LIKE ANY vị từ có sẵn trong PostgreSQL

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

Thật không may, cú pháp đó không có sẵn trong Oracle. Bạn có thể mở rộng vị từ so sánh đã định lượng bằng cách sử dụng OR , tuy nhiên:

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

Hoặc cách khác, tạo một kết nối bán bằng cách sử dụng EXISTS vị từ và một cấu trúc dữ liệu mảng bổ trợ (xem câu hỏi này để biết chi tiết):

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
)

Để tìm kiếm toàn văn thực sự, bạn có thể muốn xem 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. Hàm SYSTIMESTAMP trong Oracle

  2. Làm cách nào để tìm các giá trị trùng lặp trong bảng trong Oracle?

  3. vấn đề với hàm to_date với sysdate

  4. trình tự tiên tri ngủ đông tạo ra khoảng cách lớn

  5. Làm thế nào để sử dụng trình tự Oracle hiện có để tạo id trong chế độ ngủ đông?