我有以下SQL表:
CREATE TABLE [dbo].[Test](
[TestID] [int] NOT NULL,
[TestNum] [int] NULL,
[TestReason] [varchar](50) NULL
)
所以 TestNum 一个 INT ,允许 NULL 值,我已经在表格中插入了大量数据,其中一些这些行包含 TestNum
的 NULL 值如果我然后运行以下查询
select *
from Test
where TestNum != 123
查询aboe不会返回任何具有 NULL 值的行。我希望它返回所有行,除了值为123的那些行。
为什么会这样?
我在导入MS SQL 2005的MS-SQL 2000数据库上运行此查询。这有什么影响吗?或者,此行为是否适用于所有版本的MS SQL Server?
答案 0 :(得分:12)
NULL表示值“unknown”。因此,NULL = NULL为false。如果要查看NULL,还必须说“OR TestNum IS NULL”。
答案 1 :(得分:1)
尝试
SELECT * FROM Test WHERE TestNum != 123 OR TestNum IS NULL
NULL值的处理方式与其他值不同。
无法比较NULL
和123
;它们并不等同。