ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

如何使用SQL OR运算符组合两个布尔表达式

2022-01-20 14:33:33  阅读:197  来源: 互联网

标签:hire name YEAR 运算符 SQL date NULL 表达式


在本教程中,您将学习如何使用SQL OR运算符组合两个布尔表达式。

1. SQL OR运算符简介

SQL OR是一个逻辑运算符,它组合两个布尔表达式。 SQL OR运算符计算结果返回truefalse,具体取决于表达式的结果。

OR运算符通常用于在SELECTUPDATEDELETE语句的WHERE子句中,以形成灵活的条件。

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

SELECT
    column1,
    column2,
        ...
FROM
    table1
WHERE
    expression1
OR expression2;

下表显示了比较truefalseNULL值时OR运算符的结果。

 TRUEFALSENULL
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL

请注意,如果任一表达式为true,则OR运算符始终返回true

如果数据库系统支持短路功能,则只要一个表达式为真,OR运算符就会停止评估条件的其余部分。更多教程请访问http://www.manongzj.com

注意,短路功能可以帮助数据库系统通过在确定结果后立即中止处理逻辑表达式的剩余部分来节省CPU计算。 有关短路功能的更多信息,请查看SQL AND运算符教程。

OR运算符与AND运算符一起使用时,数据库系统会在AND运算符之后计算OR运算符。 它叫作优先规则。 但是,可以使用括号更改评估顺序。

2. SQL OR运算符示例

我们将使用示例数据库中的employees表来演示OR运算符。

mysql> DESC employees;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| first_name    | varchar(20)  | YES  |     | NULL    |                |
| last_name     | varchar(25)  | NO   |     | NULL    |                |
| email         | varchar(100) | NO   |     | NULL    |                |
| phone_number  | varchar(20)  | YES  |     | NULL    |                |
| hire_date     | date         | NO   |     | NULL    |                |
| job_id        | int(11)      | NO   | MUL | NULL    |                |
| salary        | decimal(8,2) | NO   |     | NULL    |                |
| manager_id    | int(11)      | YES  | MUL | NULL    |                |
| department_id | int(11)      | YES  | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
10 rows in set

以下声明查找了1997年或1998年加入公司的所有员工。

SELECT
    first_name, last_name, hire_date
FROM
    employees
WHERE
    YEAR (hire_date) = 1997 OR YEAR (hire_date) = 1998
ORDER BY
    first_name, last_name;

执行上面示例代码,得到以下结果 -

 

要查找1997年或1998年加入公司并在部门ID为3中工作的所有员工,可以使用ANDOR运算符,如下所示:

SELECT
    first_name, last_name, hire_date, department_id
FROM
    employees
WHERE
    department_id = 3
AND (
    YEAR (hire_date) = 1997
    OR YEAR (hire_date) = 1998
)
ORDER BY
    first_name, last_name;

执行上面查询语句,得到以下结果 -

如果不使用括号,查询将检索1997年加入公司并在部门ID为3工作的员工或1998年加入公司的员工(不限部门是哪个)。

这是因为数据库系统在AND运算符之后计算OR运算符。

SELECT
    first_name, last_name, hire_date, department_id
FROM
    employees
WHERE
    department_id = 3
AND YEAR (hire_date) = 1997
OR YEAR (hire_date) = 1998
ORDER BY
    first_name, last_name;

执行上面查询语句,得到以下结果 -

 

如果查询使用许多OR运算符,则将难以阅读。 要使查询更具可读性,可以使用IN运算符

例如,以下查询查找在1990年或1999年或2000年加入公司的所有员工。

SELECT
    first_name,
    last_name,
    hire_date
FROM
    employees
WHERE
    YEAR (hire_date) = 2000
OR YEAR (hire_date) = 1999
OR YEAR (hire_date) = 1990;

可以通过IN运算符替换OR运算符,如下所示:

SELECT
    first_name,
    last_name,
    hire_date
FROM
    employees
WHERE
    YEAR (hire_date) IN (1990, 1999, 2000)
ORDER BY
    hire_date;

执行上面示例代码,得到以下结果 -

+------------+-----------+------------+
| first_name | last_name | hire_date  |
+------------+-----------+------------+
| Alexander  | Lee       | 1990-01-03 |
| Diana      | Chen      | 1999-02-07 |
| Kimberely  | Yang      | 1999-05-24 |
| Karen      | Zhang     | 1999-08-10 |
| Min        | Su        | 1999-12-07 |
| Charles    | Yang      | 2000-01-04 |
+------------+-----------+------------+
6 rows in set

在本教程中,您已经学习了如何使用SQL OR运算符组合两个布尔表达式以形成灵活的条件。

标签:hire,name,YEAR,运算符,SQL,date,NULL,表达式
来源: https://www.cnblogs.com/myhomepages/p/15826233.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有