Můžete dosáhnout toho, co chcete, tím, že svůj dotaz trochu přeuspořádáte. Trik je v tom, že ISNULL
musí být na vnější straně, než SQL Server pochopí, že výsledná hodnota nikdy nemůže být NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Jedním z důvodů, proč to skutečně považuji za užitečné, je použití ORM a nechcete, aby výsledná hodnota byla mapována na typ s možnou hodnotou Null. Může to všechno usnadnit, pokud vaše aplikace vidí hodnotu jako nikdy nulovou. Pak nemusíte psát kód pro zpracování výjimek null atd.