首页 > 解决方案 > Oracle:在运算符中获取空值?

问题描述

假设我有两个表 A 和 B 具有完全相同的列。我想编写一个查询,从 A 中选择也存在于 B 中的所有行,所以我想写如下内容:

select att1, att2, att3 from A 
where (att1, att2, att3) in (select att1, att2, att3 from B)

但是,当我的表允许包含空值时,这不起作用,因为in运算符使用 来检查相等性=,例如att1 = att1. 这不适用于空值,因为null = ...总是会导致错误。

什么是与上述查询执行相同操作的最佳/最简单方法,但在存在空值时也有效(如果 2 个比较属性为空,则返回 true)

标签: sqloracle

解决方案


INTERSECT相反,集合运算符怎么样?

select att1, att2, att3 from A 
intersect
select att1, att2, att3 from B

推荐阅读