zoukankan      html  css  js  c++  java
  • Oracle Or子句

    Oracle Or子句

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

    Oracle OR运算符介绍

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

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

    expression_1 AND expression_2
    
    SQL

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

    TRUEFALSENULL
    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运算符来组合两个或更多的布尔表达式。

  • 相关阅读:
    Springboot注解@Scheduled定时任务的使用
    Springboot整合WebSocket和RabbitMQ实现服务器消息推送
    Springboot集成WebSocket实现消息推送功能
    RabbitMq: 主题交换机的使用(Topic Exchange)
    Rabbitmq: @RabbitListener 和 @RabbitHandler 搭配使用
    RabbitMQ开启 mqtt 协议
    @Import的简单使用
    idea快速生成对应数据库的实体类
    HttpClient封装工具类
    TypeScript基本概念
  • 原文地址:https://www.cnblogs.com/youqc/p/9359001.html
Copyright © 2011-2022 走看看