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 <> NULLtrue AND true AND unknown**相同unknown**false本例几乎相同,因为它不会通过WHERE条件 **现在,这就是为什么人们使用EXISTS+NOT EXISTS而不是IN+ 的原因NOT IN。另请参阅与索引相关的 NOT 逻辑的使用以获取更多信息
** 注意:unknown与条件false中的表达式末尾相同WHERE。
在评估表达式时,它是未知的,
请参阅下面的@kgrittn 评论以了解原因
| 归档时间: |
|
| 查看次数: |
13837 次 |
| 最近记录: |