- Oracle数据库是什么?
- Oracle 11g安装教程
- Oracle 12C安装
- Oracle数据库和实例
- 连接到Oracle数据库
- Oracle示例数据库
- 导入Oracle示例数据库
- Oracle基础入门
- Oracle数据定义
- Oracle数据类型
- Oracle修改数据
- Oracle查询数据
- Oracle连接表
- Oracle操作符
- Oracle约束
- Oracle高级部分
Oracle Any/Some运算符
在本教程中,您将学习如何使用Oracle ANY
运算符将值与列表或子查询进行比较。
Oracle ANY运算符简介
Oracle ANY
运算符用于将值与子查询返回的值或结果集列表进行比较。下面举例说明ANY
运算符与列表或子查询一起使用时的语法:
operator ANY ( v1, v2, v3) operator ANY ( subquery)
在这个语法中:
ANY
运算符前面必须有一个运算符,例如:=
,!=
,>
,>=
,<
,<=
。- 列表或子查询必须用圆括号包围。
使用ANY
运算符将值与列表进行比较时,Oracle将初始条件扩展到列表的所有元素,并使用OR
运算符将它们组合,如下所示:
SELECT * FROM table_name WHERE c > ANY ( v1, v2, v3 );
Oracle将上述查询转换为以下内容:
SELECT * FROM table_name WHERE c > v1 OR c > v2 OR c > v3;
如果使用ANY
运算符将一个值与子查询返回的结果集进行比较,则Oracle使用EXISTS运算符将查询转换为等效的查询,而不使用ANY
运算符。 例如,以下语句返回列表价格大于类别编号:1
中产品的任何标价的所有产品:
SELECT product_name, list_price FROM products WHERE list_price > ANY( SELECT list_price FROM products WHERE category_id = 1 ) ORDER BY product_name;
由于查询与ANY
运算符一起使用子查询,因此Oracle执行了单个转换,如下所示:
SELECT product_name, list_price FROM products p1 WHERE EXISTS( SELECT list_price FROM products p2 WHERE category_id = 1 AND p1.list_price > p2.list_price ) ORDER BY product_name;
请注意,如果子查询不返回任何行,则以下条件的计算结果为false
:
operator ANY (subquery)
因此,整个查询不返回行:
SELECT * FROM table_name WHERE col operator ANY(subquery);
在Oracle中,SOME
和ANY
的行为完全相同,因此它们完全可以互换。
Oracle ANY运算符的例子
如果子查询返回行或列表具有值,则以下语句适用于ANY
运算符:
1. col = ANY ( list )
如果col
在列表中匹配一个或多个值,则表达式的计算结果为true
,例如:
SELECT product_name, list_price FROM products WHERE list_price = ANY( 2200, 2259.99, 2269.99 ) AND category_id = 1;
执行上面示例代码,得到以下结果 -
2. col != ANY(list)
如果列与列表中的一个或多个值不匹配,则表达式的计算结果为true
。参考以下查询语句 -
SELECT product_name, list_price FROM products WHERE list_price != ANY( 2200, 2259.99, 2269.99 ) AND category_id = 1 ORDER BY list_price DESC;
执行上面示例代码,得到以下结果 -
3. col > ANY (list)
如果col
大于列表中的最小值,则表达式的计算结果为true
。
SELECT product_name, list_price FROM products WHERE list_price > ANY( 2200, 2259.99, 2269.99 ) AND category_id = 1 ORDER BY list_price DESC;
执行上面示例代码,得到以下结果 -
4. col >= ANY (list)
如果col
大于或等于列表中的最小值,则表达式的计算结果为true
。参考以下查询语句 -
SELECT product_name, list_price FROM products WHERE list_price >= ANY( 2200, 2259.99, 2269.99 ) AND category_id = 1 ORDER BY list_price DESC;
执行上面示例代码,得到以下结果 -
5. col < ANY (list)
如果col
小于列表中的最大值,则表达式的计算结果为true
。
SELECT product_name, list_price FROM products WHERE list_price < ANY( 2200, 2259.99, 2269.99 ) AND category_id = 1 ORDER BY list_price DESC;
执行上面示例代码,得到以下结果 -
6. col <= ANY (list)
如果col
小于或等于列表中的最大值,则表达式的计算结果为true
。
SELECT product_name, list_price FROM products WHERE list_price <= ANY( 2200, 2259.99, 2269.99 ) AND category_id = 1 ORDER BY list_price DESC;
执行上面示例代码,得到以下结果 -
在本教程中,您已学习如何使用Oracle ANY
运算符将值与列表或子查询进行比较。
下一篇:Oracle内连接
扫描二维码
程序员编程王