Oracle And子句
在本教程中,将学习如何使用Oracle AND
运算符来组合两个或更多的布尔表达式。
Oracle AND运算符介绍
AND
运算符是一个逻辑运算符,它组合了布尔表达式,如果两个表达式都为真,则返回true
。 如果其中一个表达式为假,则AND
运算符返回false
。
AND
运算符的语法如下所示:
expression_1 AND expression_2
SQL
下表说明了使用AND
运算符合并true
,false
和NULL
值时的结果 -
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
通常,在SELECT,DELETE和UPDATE语句的WHERE子句中使用AND
来形成匹配数据的条件。 另外,在JOIN子句的谓词中使用AND
运算符来形成连接条件。
在声明中使用多个逻辑运算符时,Oracle始终首先评估AND
运算符。 但是,可以使用括号来更改评估的顺序。
Oracle AND算符的例子
请参阅示例数据库中的以下订单(orders
)表:
1. Oracle AND
结合两个布尔表达式的例子
以下示例查找具有客户编号为2
的那些状态为挂起(Pending
)的订单:
SELECT order_id, customer_id, status, TO_CHAR(order_date,'YYYY-MM-DD') AS order_date
FROM orders
WHERE status = 'Pending' AND customer_id = 2
ORDER BY order_date;
SQL
在这个例子中,查询返回了满足两个表达式的所有订单信息,即:
status = 'Pending'
SQL
和
customer_id = 2
SQL
执行上面查询语句,得到以下结果:
2. Oracle AND结合两个以上的布尔表达式的例子
可以使用多个AND
运算符来组合布尔表达式。
例如,以下语句检索满足以下所有条件的订单:
- 在
2017
年放置。 - 负责售货员编号为
60
。 - 有发货状态。
参考以下查询语句 -
SELECT
order_id,
customer_id,
status,
TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date
FROM
orders
WHERE
status = 'Shipped'
AND salesman_id = 60
AND EXTRACT(YEAR FROM order_date) = 2017
ORDER BY
order_date;
SQL
执行上面查询语句,得到以下结果 -
3. Oracle AND与OR运算符结合示例
可以将AND
运算符与其他逻辑运算符(如OR和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;
SQL
执行上面查询语句,得到以下结果 -
在本教程中,我们已学习如何使用Oracle AND
运算符来组合两个或更多的布尔表达式。