Próbuję utworzyć widok, w którym chcę, aby kolumna była tylko prawdą lub fałszem. Jednak wydaje się, że niezależnie od tego, co robię, SQL Server (2008) uważa, że moja kolumna bitowa może być w jakiś sposób zerowa.
Mam tabelę o nazwie „Produkt” z kolumną „Status”, czyli INT, NULL. W widoku chcę zwrócić wiersz dla każdego wiersza w produkcie, z kolumną BIT ustawioną na wartość true, jeśli kolumna Product.Status jest równa 3, w przeciwnym razie pole bitu powinno mieć wartość false.
Przykład SQL
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
Jeśli zapiszę to zapytanie jako widok i spojrzę na kolumny w Eksploratorze obiektów, kolumna HasStatus jest ustawiona na BIT, NULL. Ale nigdy nie powinno być NULL. Czy jest jakaś magiczna sztuczka SQL, której mogę użyć, aby wymusić istnienie tej kolumny NOT NULL.
Zauważ, że jeśli usunę CAST()otaczającą CASEkolumnę, kolumna jest poprawnie ustawiona jako NOT NULL, ale wtedy typ kolumny jest ustawiony na INT, co nie jest tym, czego chcę. Chcę, żeby tak było BIT. :-)