new*_*der 21 postgresql null query informix
我有一个查询(针对 Postgres 和 Informix),其中NOT IN
包含一个子查询,该子查询在某些情况下返回NULL
值,导致该子句(以及整个查询)无法返回任何内容。
理解这一点的最佳方式是什么?我认为NULL
没有价值的东西,因此不希望查询失败,但显然这不是考虑NULL
.
gbn*_*gbn 31
布尔逻辑 - 或三值逻辑
x NOT IN (1, 2, NULL)
是相同的 NOT (x = 1 OR x = 2 OR x = NULL)
x <> 1 AND x <> 2 AND x <> NULL
true AND true AND unknown
**相同unknown
**false
本例几乎相同,因为它不会通过WHERE
条件 **现在,这就是为什么人们使用EXISTS
+NOT EXISTS
而不是IN
+ 的原因NOT IN
。另请参阅与索引相关的 NOT 逻辑的使用以获取更多信息
** 注意:unknown
与条件false
中的表达式末尾相同WHERE
。
在评估表达式时,它是未知的,
请参阅下面的@kgrittn 评论以了解原因
归档时间: |
|
查看次数: |
13837 次 |
最近记录: |