SELECT * FROM Table1 WHERE
Table1.PRODUCT LIKE ( select regexp_substr(I_PRODUCT,'[^,]+', 1, level) from dual
connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null);
THÍCH toán tử sẽ không thành công trong truy vấn trên. Bạn cần sử dụng IN , nội bộ sẽ được đánh giá là nhiều HOẶC .
Table1.PRODUCT IN ( select regexp_substr(I_PRODUCT,'[^,]+', 1, level) from dual
connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null);
Ngoài ra, liên quan đến thay đổi danh sách IN , hãy xem câu trả lời của tôi tại đây .
Cập nhật
Dựa trên nhận xét của OP.
Sửa đổi truy vấn thành:
WITH str_search AS
(
select regexp_substr(I_PRODUCT,'[^,]+', 1, level) pattern from dual
connect by regexp_substr(I_PRODUCT, '[^,]+', 1, level) is not null
)
SELECT *
FROM Table1
WHERE EXISTS (
SELECT NULL
FROM str_search
WHERE tab.col LIKE pattern
);