Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql postgres列具有空值,并使用“过滤”=&引用;_Sql_Postgresql - Fatal编程技术网

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;  

另外两个特殊比较运算符与(具有令人恼火的向后逻辑)不同,也没有区别。另外两个特殊比较运算符与(具有令人恼火的向后逻辑)不同,也没有区别参考手册:-特别是那里的真值表。参考手册:-特别是那里的真值表。