Oracle Or子句

oracle or子句

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

 

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运算符。 但是,可以使用括号更改评估的顺序。

 

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;

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

status = 'pending'
-- 或
status = 'canceled' 

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

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;

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

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

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

下一节:oracle fetch子句

oracle教程

相关文章