Możesz osiągnąć to, co chcesz, zmieniając nieco swoje zapytanie. Sztuczka polega na tym, że ISNULL
musi być na zewnątrz, zanim SQL Server zrozumie, że wynikowa wartość nigdy nie może być NULL
.
SELECT ISNULL(CAST(
CASE Status
WHEN 3 THEN 1
ELSE 0
END AS bit), 0) AS HasStatus
FROM dbo.Product
Jednym z powodów, dla których uważam to za przydatne, jest używanie ORM i nie chcesz, aby wynikowa wartość była mapowana na typ dopuszczający wartość null. Może to ułatwić wszystko, jeśli aplikacja widzi, że wartość nigdy nie jest pusta. Wtedy nie musisz pisać kodu do obsługi wyjątków zerowych itp.