在本教程中,我们来学习如何使用Oracle OR
运算符来组合两个或更多的布尔表达式。
OR
运算符是一个逻辑运算符,它组合了布尔表达式,如果其中一个表达式为真(true
),则返回true
。
以下说明OR
运算符的语法:
expression_1 AND expression_2
下表显示了OR
运算符在true
,false
和NULL
值之间的结果。
值 | TRUE | FALSE | NULL |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
我们经常在SELECT,DELETE和UPDATE语句的WHERE子句中使用OR
运算符来形成过滤数据的条件。
如果在语句中使用多个逻辑运算符,则Oracle会在评估NOT
和AND运算符之后评估OR
运算符。 但是,可以使用括号更改评估的顺序。
我们将使用示例数据库中的orders
表进行演示。表结构如下图所示 -
以下示例查找状态为挂起(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'
执行上面查询语句,得到以下结果 -
我们经常使用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;
执行上面查询语句,得到以下结果 -
可以使用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
运算符返回的结果相同。
可以将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;
执行上面查询语句,得到以下结果 -
在本教程中,您已学习如何使用Oracle OR
运算符来组合两个或更多的布尔表达式。