Sie können erreichen, was Sie wollen, indem Sie Ihre Abfrage ein wenig umstellen. Der Trick besteht darin, dass der ISNULL
muss außen sein, bevor SQL Server versteht, dass der resultierende Wert niemals NULL
sein kann .
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Ein Grund, warum ich das tatsächlich nützlich finde, ist die Verwendung eines ORM und Sie möchten nicht, dass der resultierende Wert einem Nullable-Typ zugeordnet wird. Es kann alles einfacher machen, wenn Ihre Anwendung den Wert so sieht, dass er niemals null ist. Dann müssen Sie keinen Code schreiben, um Nullausnahmen usw. zu behandeln.