SELECT *
FROM foo
WHERE id = $id
AND ( bar = $baz OR $baz [equals null, empty string, zero, whatever] )
Tôi không biết liệu MySQL có bao giờ sử dụng đánh giá ngắn mạch không trong kế hoạch thực thi của nó, nhưng có thể có lợi nếu đặt so sánh rẻ hơn lên trước, như:
SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )
Bạn có thể sử dụng phương pháp này với nhiều tham số.
SELECT *
FROM foo
WHERE id = $id
AND ( $baz [equals null, empty string, zero, whatever] OR bar = $baz )
AND ( $x = 0 or x = $x )
AND ( $y IS NULL OR y = $y )
-- etc.