Vous pouvez obtenir ce que vous voulez en réorganisant un peu votre requête. L'astuce est que le ISNULL
doit être à l'extérieur avant que SQL Server comprenne que la valeur résultante ne peut jamais être NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Une des raisons pour lesquelles je trouve cela utile est lorsque j'utilise un ORM et vous ne voulez pas que la valeur résultante soit mappée à un type nullable. Cela peut faciliter les choses tout autour si votre application voit la valeur comme n'étant jamais nulle. Ensuite, vous n'avez pas à écrire de code pour gérer les exceptions nulles, etc.