can*_*int 10 sql database sql-server sql-server-2008-r2
假设我有一张名为nameAge:
ID Name Age
1 X 12
2 Y 12
3 null null
4 Z 12
Run Code Online (Sandbox Code Playgroud)
当我运行如下查询:
select * from nameAge where Age <> 12
Run Code Online (Sandbox Code Playgroud)
它返回一个空的结果集,而我的行与id 3哪里age不同null?
用Sql Server 2008 R2.
有任何想法吗?
编辑:与建议答案重复的可能性可能在某一点,但根本没有涵盖,它显示了如何使用空值与null比较,但我想问的是关于包含空值的结果集
ugh*_*hai 16
这是预期的行为.您无法NULL使用=或比较值<>.你必须使用IS NULL或IS NOT NULL.
如果你想要NULL值只使用IS NULL:
select * from nameAge where age IS NULL
Run Code Online (Sandbox Code Playgroud)
如果您想要NULL值包含age <> 12值,请使用:
select * from nameAge where age <> 12 OR age IS NULL
Run Code Online (Sandbox Code Playgroud)
表达方式
WHERE NULL <> 12
Run Code Online (Sandbox Code Playgroud)
不返回TRUE或FALSE,但实际上返回UNKNOWN.这意味着您的查询不会返回表中的第三条记录.
正如@ughai所提到的,您应该使用它IS NULL来查询该记录:
SELECT * FROM nameAge WHERE age IS NULL
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看Microsoft SQL Server文档.
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |