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