Я пытаюсь создать представление, в котором я хочу, чтобы столбец был только истинным или ложным. Однако кажется, что что бы я ни делал, SQL Server (2008) считает, что мой битовый столбец каким-то образом может быть нулевым.
У меня есть таблица под названием «Продукт» со столбцом «Статус», который есть INT, NULL
. В представлении я хочу вернуть строку для каждой строки в продукте, для столбца BIT установлено значение true, если столбец Product.Status равен 3, в противном случае битовое поле должно иметь значение false.
Пример SQL
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
Если я сохраню этот запрос как представление и посмотрю на столбцы в обозревателе объектов, для столбца HasStatus будет установлено значение BIT, NULL
. Но он никогда не должен быть NULL. Есть ли какой-нибудь волшебный трюк SQL, который я могу использовать, чтобы заставить этот столбец быть NOT NULL
.
Обратите внимание, что если я удалю CAST()
вокруг CASE
, столбец будет правильно установлен как NOT NULL
, но тогда будет установлен тип столбца INT
, что не то, что я хочу. Я хочу, чтобы это было BIT
. :-)