我试图创建一个视图,其中列只能是 true 或 false。然而,似乎无论我做什么,SQLServer (2008)都认为我的位列可以是空的。
我有一个名为“ Product”的表,其中“ Status”列为 INT, NULL
。在视图中,我希望为 Product 中的每一行返回一行,如果 Product。状态列等于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
。
注意,如果我移除 CASE
周围的 CAST()
,该列被正确地设置为 NOT NULL
,但是该列的类型被设置为 INT
,这不是我想要的。我希望是 BIT
。:-)