Puede lograr lo que desea reorganizando un poco su consulta. El truco es que el ISNULL
tiene que estar en el exterior antes de que SQL Server entienda que el valor resultante nunca puede ser NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Una razón por la que realmente encuentro esto útil es cuando uso un ORM y no desea que el valor resultante se asigne a un tipo anulable. Puede hacer las cosas más fáciles si su aplicación considera que el valor nunca será nulo. Entonces no tiene que escribir código para manejar excepciones nulas, etc.