Tôi có một truy vấn SQL được tham số hóa bởi một khuôn khổ nội bộ rất hạn chế. Truy vấn trông giống như sau:SQL Trong khoản có không đối với nhiều tham số
Select * from somewhere
where name IN (:parameter);
Mã sẽ đưa không đến nhiều chuỗi vào vị trí được chỉ định bởi tham số:. Cờ ": tham số" chỉ có thể được sử dụng trong mệnh đề "IN" (vì vậy nó không thể được di chuyển sau mệnh đề where để điều kiện chèn phần 'name IN').
Đôi khi người sử dụng sẽ thiết lập thông số để:
'chó', 'mèo'
Lần khác, người dùng sẽ không đặt bất kỳ giá trị vào: biến tham số. Điều này gây ra một vấn đề vì các truy vấn SQL kết quả sẽ là:
Select * from somewhere
where name IN();
Mã của tôi có thể nắm bắt những trường hợp tham số là trống rỗng, nhưng tôi cần một cái gì đó mà tôi có thể tiêm vào báo cáo kết quả, trong đó đảm bảo sẽ không bao giờ phù hợp với một thực tế chuỗi.
Có bất kỳ biểu thức chính quy SQL nào mà tôi có thể tiêm mà KHÔNG BAO GIỜ khớp với bất kỳ chuỗi nào không? Một cái gì đó như%.% Hoặc một cái gì đó ....
Cảm ơn!
Điều này có thể cần suy nghĩ thêm. Giả sử truy vấn là truy vấn thực tế của bạn, về cơ bản bạn chọn mọi bản ghi và mọi cột trong bảng cơ sở dữ liệu (có nghĩa là lớn, nếu nó yêu cầu một bảng IN), có thể không phải là chiến lược tốt nhất. –
xem xét từ hướng khác, tại sao không cho phép người dùng gửi trang nếu trường đó trống? –
@Robert - thực sự có các phần khác trong truy vấn; Tôi đơn giản hóa nó cho các mục đích của stackoverflow; tuy nhiên các phần khác không loại bỏ vấn đề với tham số tên – David