当前位置:首页 > SCHOOL > Oracle字典 > 正文内容

Oracle Or子句

admin3年前 (2022-03-21)Oracle字典2640

OR是Oracle中的逻辑运算符,本教程,将来学习如何使用OR运算符来组合两个或更多的布尔表达式。

Oracle OR运算符语法

OR运算符组合了布尔表达式,如果其中一个表达式为真(true),则返回true。

以下是OR运算符的语法:

expression_1 OR expression_2

下表显示了OR运算符在true,false和NULL值之间的结果。

TRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL

我们经常在SELECT,DELETE和UPDATE语句的WHERE子句中使用OR运算符来形成过滤数据的条件。

如果在语句中使用多个逻辑运算符,则Oracle会在评估NOT和AND运算符之后评估OR运算符。 但是,可以使用括号更改评估的顺序。

Oracle OR运算符使用实例

我们将使用以下的orders表进行演示:

1

1. Oracle OR运算符组合两个布尔表达式的例子

以下示例查找状态为挂起(Pending)或取消(Canceled)的订单,参考以下查询语句:

SELECT order_id,
       customer_id,
       status,
       TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
  FROM orders
 WHERE status = 'Pending'
    OR status = 'Canceled'
 ORDER BY order_date DESC;

在这个例子中,语句返回了满足下列表达式之一的所有订单:

status = 'Pending' -- 或 status = 'Canceled'

执行上面的代码可以得到以下结果:

2

2. Oracle OR运算符结合两个以上的布尔表达式的例子

我们经常使用OR运算符来组合两个以上的布尔表达式。 例如,以下语句检索负责以下销售员ID是60,61或62的订单:

SELECT order_id,
       customer_id,
       status,
       salesman_id,
       TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
  FROM orders
 WHERE salesman_id = 60
    OR salesman_id = 61
    OR salesman_id = 62
 ORDER BY order_date DESC;

执行上面的代码可以得到以下结果: 

3

可以使用IN运算符来代替使用多个OR运算符,如下例所示:

SELECT order_id,
       customer_id,
       status,
       salesman_id,
       TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
  FROM orders
 WHERE salesman_id IN (60, 61, 62)
 ORDER BY order_date DESC;

该查询返回的结果与使用上面的OR运算符返回的结果相同。

3. Oracle OR运算符与AND运算符结合使用的示例

可以将OR运算符与其他逻辑运算符(如AND和NOT)结合起来,形成一个条件。 例如,以下查询将返回属于客户ID为44并且已取消(Canceled)或挂起(Pending)状态的订单。参考以下查询语句:

SELECT order_id,
       customer_id,
       status,
       salesman_id,
       TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
  FROM orders
 WHERE (status = 'Canceled' OR status = 'Pending')
   AND customer_id = 44
 ORDER BY order_date;

执行上面的代码可以得到以下结果:

4

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。
标签: 过滤数据

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。