在本教程中,我们来学习如何使用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
运算符来组合两个或更多的布尔表达式。