【发布时间】:2021-10-22 22:07:54
【问题描述】:
我的查询中有一些复杂的比较,我想确保我在存在空值的情况下正确理解逻辑。似乎“未知”与 PostgreSQL 中的“空”是一样的,我没想到会这样。
这是我的例子:
create table tab (col int);
insert into tab (col) values (7), (11), (null);
select col,
(col = 7) is true as is_true,
(col = 7) is false as is_false,
(col = 7) is unknown as is_unknown,
(col = 7) is null as is_null
from tab;
它显示输出:
+-----+--------+---------+-----------+--------+
|a |is_true |is_false |is_unknown |is_null |
+-----+--------+---------+-----------+--------+
|7 |true |false |false |false |
|11 |false |true |false |false |
|null |false |false |true |**true**|
+-----+--------+---------+-----------+--------+
最后一个值不应该是“假”而不是“真”吗?
【问题讨论】:
-
由于
NULL是一个unknown值,理论上它可能是7,任何比较的结果都是unknown又名Null。 -
@TimSchmelter "...is unknown aka Null": 所以你确认 unknown 等同于 null。
标签: sql postgresql logical-operators