Bạn có thể đạt được những gì bạn muốn bằng cách sắp xếp lại truy vấn của mình một chút. Bí quyết là ISNULL
phải ở bên ngoài trước khi SQL Server hiểu rằng giá trị kết quả không bao giờ có thể là NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Một lý do khiến tôi thực sự thấy điều này hữu ích là khi sử dụng ORM và bạn không muốn giá trị kết quả được ánh xạ tới kiểu nullable. Nó có thể làm cho mọi thứ trở nên dễ dàng hơn nếu ứng dụng của bạn thấy giá trị không bao giờ có thể là giá trị rỗng. Sau đó, bạn không phải viết mã để xử lý các ngoại lệ rỗng, v.v.