Sử dụng bộ sưu tập (chúng không giới hạn ở 1000 mục như IN
mệnh đề là):
SELECT COLUMN_VALUE AS id
FROM TABLE(
SYS.ODCIVARCHAR2LIST(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
)
)
SYS.ODCIVARCHAR2LIST
và SYS.ODCINUMBERLIST
là các loại tập hợp được cung cấp trong SYS
lược đồ.
Bạn có thể tham gia trực tiếp vào bảng nào bạn đang SELECT
nhập từ mà không cần sử dụng DUAL
bảng:
SELECT y.*
FROM your_table y,
TABLE(
SYS.ODCIVARCHAR2LIST(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
)
) i
WHERE y.id = i.COLUMN_VALUE;
Nếu bạn có thể tạo một loại bộ sưu tập thì bạn thậm chí không cần TABLE
và có thể sử dụng nó trực tiếp trong WHERE
mệnh đề sử dụng MEMBER OF
nhà điều hành:
CREATE OR REPLACE TYPE stringlist IS TABLE OF VARCHAR2(200);
/
SELECT *
FROM yourtable
WHERE id MEMBER OF stringlist(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
);
Bạn thậm chí có thể chuyển các giá trị dưới dạng tham số ràng buộc - xem câu trả lời của tôi tại đây