我正在try 创建一个视图,其中我希望一个列只能为true或false.然而,似乎无论我做什么,SQL Server(2008)都认为我的bit列可以以某种方式为空.
我有一个名为"Product"的表格,其中"Status"列为INT, NULL
.在一个视图中,我想为Product中的每一行返回一行,如果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
.但它永远不应该为空.有什么神奇的SQL技巧可以让我把这个专栏变成NOT NULL
.
请注意,如果我删除CASE
周围的CAST()
,该列将正确设置为NOT NULL
,但该列的类型将设置为INT
,这不是我想要的.我希望是BIT
.:-)