SQL Server không làm đoản mạch (cũng không nên làm như vậy).
Nếu bạn cần nó đừng thử trong một số trường hợp, bạn cần phải bắt buộc điều đó theo cách bạn viết truy vấn của mình.
Đối với truy vấn này, cách khắc phục đơn giản nhất là sử dụng CASE
biểu thức trong WHERE
của bạn mệnh đề.
declare @queryWord as nvarchar(20) = 'asdas'
SELECT * FROM TABLE_1
WHERE TABLE_1.INIT_DATE = (CASE WHEN ISDATE(@queryWord) = 1
THEN CONVERT(Date, @queryWord)
ELSE NULL END)
Không thuận tiện, CASE
và lồng truy vấn là hai cách duy nhất được hỗ trợ mà tôi có thể nghĩ ra để buộc một thứ tự đánh giá cho các điều kiện phụ thuộc trong SQL.