Sql postgres列具有空值,并使用“过滤”=&引用;
我的问题是:Sql postgres列具有空值,并使用“过滤”=&引用;,sql,postgresql,Sql,Postgresql,我的问题是: select * from students where status != 4. 我没有得到状态为空的行 它不应该返回状态不是4的所有行吗?包括状态值为空的行 我可以通过以下查询得到我需要的 select * from students where status != 4 or status is null 除了两个特殊的is null和is NOT null比较之外,使用普通比较运算符与null进行的任何比较都永远不会为真。使用普通比较运算符与null进行的任何比较都永远
select * from students where status != 4.
我没有得到状态为空的行
它不应该返回状态不是4的所有行吗?包括状态值为空的行
我可以通过以下查询得到我需要的
select * from students where status != 4 or status is null
除了两个特殊的is null和is NOT null比较之外,使用普通比较运算符与null进行的任何比较都永远不会为真。使用普通比较运算符与null进行的任何比较都永远不会为真,除了两个特殊的is null和is NOT null比较之外。SQL对
null
的理解是。将NULL
视为UNKNOWN
。因此,换言之:
UNKNOWN = 4 yields UNKNOWN
UNKNOWN != 4 yields also UNKNOWN
换句话说,如果学生的
状态为空
,那么该状态是否与4不同是“未知的”SQL对空
的理解是。将NULL
视为UNKNOWN
。因此,换言之:
UNKNOWN = 4 yields UNKNOWN
UNKNOWN != 4 yields also UNKNOWN
换句话说,如果学生的
状态为null
,则该状态为“未知”无论该状态是否与4不同,这都有点令人不安,但null
不是一个值,而r其特定运算符是这有点令人不安,但null
不是一个值,r其特定运算符是使用:
有别于
SELECT * FROM students WHERE status IS DISTINCT FROM 4;
使用:
有别于
SELECT * FROM students WHERE status IS DISTINCT FROM 4;
另外两个特殊比较运算符与(具有令人恼火的向后逻辑)不同,也没有区别。另外两个特殊比较运算符与(具有令人恼火的向后逻辑)不同,也没有区别参考手册:-特别是那里的真值表。参考手册:-特别是那里的真值表。