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

lặp qua một mảng cho điều kiện where pl / sql

Chúng ta có thể sử dụng TABLE chức năng trên một tập hợp để nhận danh sách các số / ký tự.

SELECT *
FROM TABLE ( sys.odcinumberlist(8779254,8819930,8819931) );

8779254
8819930
8819931

Ở đây tôi đang sử dụng VARRAY nội bộ của Oracle với giới hạn 32767. Bạn có thể sử dụng NESTED TABLE của riêng mình loại.

create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;

và sau đó chọn nó.

SELECT *
FROM TABLE ( yourtype(8779254,8819930,8819931) );

Vì vậy, truy vấn của bạn có thể đơn giản được viết là

SELECT x_name
FROM table_x
WHERE x_id IN ( SELECT * FROM 
       TABLE ( yourtype(8779254,8819930,8819931) ) );

12.2 trở lên, bạn thậm chí sẽ không cần chỉ định TABLE .

SELECT * FROM yourtype(8779254,8819930,8819931) hoạt động.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kiểm tra xem chuỗi định dạng ngày có phải là chuỗi định dạng ngày hợp lệ trong Oracle không

  2. Không thể chỉnh sửa Tệp cấu hình OHS trong Trình quản lý doanh nghiệp

  3. Không thể xác thực, với tùy chọn không xác thực

  4. Làm cách nào để truy vấn nội dung nào đó bắt đầu bằng các ký tự nhất định?

  5. Không hiểu tại sao SQL của tôi không hoạt động