Я пытаюсь создать представление, в котором я хочу, чтобы столбец был только true или false. Однако, похоже, что независимо от того, что я делаю, SQL Server (2008) считает, что мой битовый столбец может как-то быть нулевым.
У меня есть таблица «Продукт» со столбцом «Статус», которая INT, NULL
. В представлении я хочу вернуть строку для каждой строки в Product, причем для столбца BIT установлено значение true, если столбец Product.Status равен 3, в противном случае битовое поле должно быть ложным.
Пример 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
. : -)