我正在尝试创建一个视图,我希望列仅是真或假。但是,似乎无论我做什么,SQL Server (2008) 都认为我的位列可能以某种方式为空。
我有一个名为“产品”的表,其中的“状态”列是INT, NULL
. 在一个视图中,我想为 Product 中的每一行返回一行,如果 Product.Status 列等于 3,则 BIT 列设置为 true,否则 bit 字段应该为 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
。:-)