Você pode conseguir o que deseja reorganizando um pouco sua consulta. O truque é que o
ISNULL
tem que estar do lado de fora antes que o SQL Server entenda que o valor resultante nunca pode ser NULL
. SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Uma razão pela qual acho isso útil é ao usar um ORM e você não deseja que o valor resultante seja mapeado para um tipo anulável. Isso pode tornar as coisas mais fáceis se seu aplicativo vir o valor como nunca possivelmente nulo. Então você não precisa escrever código para lidar com exceções nulas, etc.