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ą CASE
kolumnę, 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
. :-)