Oracle Or子句

作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146

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

Oracle OR运算符介绍

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

以下说明OR运算符的语法:

expression_1 AND expression_2
SQL

下表显示了OR运算符在truefalseNULL值之间的结果。

TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL

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

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

Oracle OR运算符的例子

我们将使用示例数据库中的orders表进行演示。表结构如下图所示 -

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;
SQL

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

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

执行上面查询语句,得到以下结果 -

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

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

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;
SQL

执行上面查询语句,得到以下结果 -

可以使用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;
SQL

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

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

可以将OR运算符与其他逻辑运算符(如ANDNOT)结合起来,形成一个条件。 例如,以下查询将返回属于客户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;
SQL

执行上面查询语句,得到以下结果 -

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

Oracle Or子句的更多相关文章

  1. Oracle Like子句

    Oracle Like子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle LIKE运算符来测试列中的值是否与指定 ...

  2. Oracle Between子句

    Oracle Between子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle BETWEEN运算符来选择值在一 ...

  3. Oracle In子句

    Oracle In子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle IN运算符来确定值是否与列表或子查询中的任 ...

  4. Oracle Fetch子句

    Oracle Fetch子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,将学习如何使用Oracle FETCH子句来限制查询返回的行数. ...

  5. Oracle And子句

    Oracle And子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,将学习如何使用Oracle AND运算符来组合两个或更多的布尔表达式. ...

  6. Oracle Where子句

    Oracle Where子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,将学习如何使用Oracle WHERE子句来指定过滤的条件返回符合 ...

  7. oracle排序子句的特殊写法与ORA-01785错误

    刚刚写的SQL语句在执行的时候报[ORA-01785: ORDER BY item must be the number of a SELECT-list expression]错误,于是自己百度了一 ...

  8. oracle SELECT子句中避免使用 ‘ * ‘

    当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法. 不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所 ...

  9. oracle WHERE子句中的连接顺序

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 例如: (低效,执行时间1 ...

随机推荐

  1. 深入理解java:2.3. 并发编程 java.util.concurrent包

    JUC java.util.concurrent包, 这个包是从JDK1.5开始引入的,在此之前,这个包独立存在着,它是由Doug Lea开发的,名字叫backport-util-concurrent ...

  2. [转帖]CBO和RBO

    http://www.itpub.net/thread-263395-1-1.html 参数不能随便改啊.. optimizer_features_enable('8.1.7') ORACLE 提供了 ...

  3. MySQL服务意外停止

    先说一下,发现MySQL服务停了,启动就又好了,但是好奇服务意外停止的原因,所以看了一下MySQL的错误日志. 但是到底是哪个错误导致MySQL服务意外终止,还没有定论,故有了此篇文章,还望知道原因的 ...

  4. python中django中间件

    一.中间件 所谓的中间件,就是存在socket和视图函数中间的一种相当于过滤的机构. 中间件共分为: (1)process_request(self,request) (2)process_view( ...

  5. 输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准 库)

    import datetime def dayofyear(): year = input("请输入年份:") month = input("请输入月份:") ...

  6. 2019 湖湘杯 Reverse WP

    0x01 arguement 下载链接:https://www.lanzous.com/i7atyhc 1.准备 获取到信息: 32位的文件 upx加密文件 在控制台打开文件 使用"upx ...

  7. “百度杯”CTF比赛 十一月场--CrackMe01

    测试文件:https://static2.ichunqiu.com/icq/resources/fileupload/CTF/BSRC/BSRC-11-3/CrackMe01_97D2BF0DBD2E ...

  8. Maven下载清除jar包

    maven jar包下载命令行方式 在STS中下载JAR包时经常卡住无法继续下载,这时可以用命令行方式进行下载.在终端中今入到该项目的根目录下,然后mvn clean;mvn install;等待下载 ...

  9. Java多线程(1)

    线程与进程 进程:程序的执行过程 线程:线程共享进程的资源 Java多线程 实现的方式 继承Tread类:使用getName()获取当前线程名 实现Runnable接口:Thread.currentT ...

  10. Spring基础19——Spring中几种注解的区别

    1.@Autowired:注解是用来装配bean的,需要注入的bean必须是已经被IOC容器创建的bean,这个注解是利用类型装配的,如果容器中出现一个以上要装配的类或其子类就需要用@Qualifie ...