oracle运算符all是关于集合的,如果集合为空,即取不到值,它与任何的<>、=等的比较,都返回真。奇怪....
SQL> SELECT 1 result FROM dual WHERE 1<>1;
RESULT
---------
SQL>
SQL> SELECT 1 RESULT
2 FROM dual
3 WHERE 1 <> ALL (SELECT 2 RESULT
4 FROM dual
5 UNION
6 SELECT 3 RESULT FROM dual);
RESULT
---------
1
SQL>
SQL> SELECT 1 RESULT
2 FROM dual
3 WHERE 1 <> ALL (SELECT 2 RESULT FROM dual WHERE 1 <> 1);
RESULT
---------
1
SQL>
本文探讨了Oracle数据库中ALL运算符的特殊行为,尤其是在处理空集时的情况。当使用<>或=与ALL结合时,若子查询结果为空,比较结果总是返回真。通过具体的SQL示例说明了这一特性。
492

被折叠的 条评论
为什么被折叠?



