Можете да постигнете това, което искате, като пренаредите малко заявката си. Номерът е, че ISNULL
трябва да е отвън, преди SQL Server да разбере, че получената стойност никога не може да бъде NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Една от причините да намирам това за полезно е, когато използвам ORM и не искате резултантната стойност да бъде съпоставена към nullable тип. Това може да направи нещата по-лесни навсякъде, ако вашето приложение вижда стойността като никога не е възможно да е нула. Тогава не е нужно да пишете код за обработка на нулеви изключения и т.н.