Các câu trả lời được xếp hạng thứ hai và các câu trả lời tiếp theo cung cấp một phương pháp để thực hiện điều này mà không ràng buộc giá trị tìm kiếm hai lần:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Lưu ý rằng điều này yêu cầu một giá trị giả không bao giờ có thể là giá trị cột hợp lệ (đó là "nằm ngoài dải"); Tôi đang sử dụng chuỗi trống. Nếu bạn không có bất kỳ giá trị nào như vậy, bạn sẽ phải thực hiện việc ràng buộc giá trị hai lần:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);