【发布时间】:2009-03-25 21:49:11
【问题描述】:
在我的表中,我有一个可为空的位列(旧系统...),另一位开发人员最近对存储过程进行了更改,以仅显示位列不正确的值 (1)。因为这是一个可以为空的列,我们注意到如果该列是 NULL,则记录没有被拾取。为什么是这样?
我和其他开发人员都同意 NULL 1... 这是 SQL 中的错误还是这样设计的?似乎是设计缺陷。
当前代码:
(VoidedIndicator <> 1)
建议的修复:
(VoidedIndicator <> 1 OR VoidedIndicator IS NULL)
澄清(乔恩·埃里克森)
VoidedIndicator 是一个可为空的位字段,因此它可以具有以下值:NULL、0 或 1
当使用 (VoidedIndicator 1) 等 where 子句创建 SQL 语句时,我们只会返回 VoidedIndicator == 0 的记录,但我们期望 VoidedIndicator == 0 和 VoidedIndicator IS NULL。这是为什么呢?
【问题讨论】:
标签: sql sql-server-2005 tsql