SQL比较运算符

在本教程中,您将了解SQL比较运算符以及如何使用它们来组成过滤数据的条件。SQL比较运算符用于测试两个表达式是否相同,下表说明了SQL中的比较运算符:

编号运算符描述/含意
1=等于
2<>不等于
3>大于
4>=大于或等于
5<小于
6<=小于或等于
7!=不等于

比较运算符的结果只能是三个值:truefalseunknown的其中一个。

1. 等于(=)运算符

等于(=)运算符用于比较两个表达式的相等性:

expression1 = expression2

如果左表达式的值等于右表达式的值,则返回true; 否则返回false

例如,以下语句查找姓氏(last_name)为Lee的员工信息:

SELECT 
    employee_id, first_name, last_name
FROM
    employees
WHERE
    last_name = 'Lee';

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

+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
|         100 | Steven     | Lee       |
|         103 | Alexander  | Lee       |
+-------------+------------+-----------+
2 rows in set

在此示例中,查询在employees表的last_name列中搜索字符串:Lee

请注意,等于(=)运算符不能用于比较NULL值。 例如,以下查询是查找没有电话号码的所有员工信息:

SELECT 
    employee_id, first_name, last_name, phone_number
FROM
    employees
WHERE
    phone_number = NULL;

但是,上面查询语句返回一个空结果集,因为以下表达式始终返回false

phone_number = NULL

要比较空(null)值,请改用IS NULL运算符,重写上面查询语句 –

SELECT 
    employee_id, first_name, last_name, phone_number
FROM
    employees
WHERE
    phone_number IS NULL;

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

+-------------+------------+-----------+--------------+
| employee_id | first_name | last_name | phone_number |
+-------------+------------+-----------+--------------+
|         145 | John       | Liu       | NULL         |
|         146 | Karen      | Liu       | NULL         |
|         176 | Jonathon   | Yang      | NULL         |
|         177 | Jack       | Yang      | NULL         |
|         178 | Kimberely  | Yang      | NULL         |
|         179 | Charles    | Yang      | NULL         |
+-------------+------------+-----------+--------------+
6 rows in set

2. 不等于(<>)运算符

不等于(<>)运算符用于比较两个非空表达式,如果左表达式的值不等于右表达式,则返回true; 否则返回false

expression1 <> expression2

例如,以下语句将返回部门ID不是8的所有员工信息。

SELECT 
    employee_id, first_name, last_name, department_id
FROM
    employees
WHERE
    department_id <> 8
ORDER BY first_name , last_name;

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

+-------------+------------+-----------+---------------+
| employee_id | first_name | last_name | department_id |
+-------------+------------+-----------+---------------+
|         103 | Alexander  | Lee       |             6 |
|         115 | Alexander  | Su        |             3 |
|         114 | Avg        | Su        |             3 |
|         193 | Britney    | Zhao      |             5 |
|         104 | Bruce      | Wong      |             6 |
|         109 | Daniel     | Chen      |            10 |
... ...
|         100 | Steven     | Lee       |             9 |
|         203 | Susan      | Zhou      |             4 |
|         106 | Valli      | Chen      |             6 |
|         206 | William    | Wu        |            11 |
+-------------+------------+-----------+---------------+
34 rows in set

可以使用AND运算符组合使用不等于(<>)运算符的多个表达式。 例如,以下语句查找部门ID不是810的所有员工信息。

SELECT 
    employee_id, first_name, last_name, department_id
FROM
    employees
WHERE
    department_id <> 8
        AND department_id <> 10
ORDER BY first_name , last_name;

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

+-------------+------------+-----------+---------------+
| employee_id | first_name | last_name | department_id |
+-------------+------------+-----------+---------------+
|         103 | Alexander  | Lee       |             6 |
|         115 | Alexander  | Su        |             3 |
|         114 | Avg        | Su        |             3 |
|         193 | Britney    | Zhao      |             5 |
|         104 | Bruce      | Wong      |             6 |
|         105 | David      | Liang     |             6 |
|         107 | Diana      | Chen      |             6 |
|         118 | Guy        | Zhang     |             3 |
... ...
|         117 | Sigal      | Zhang     |             3 |
|         100 | Steven     | Lee       |             9 |
|         203 | Susan      | Zhou      |             4 |
|         106 | Valli      | Chen      |             6 |
|         206 | William    | Wu        |            11 |
+-------------+------------+-----------+---------------+
28 rows in set

3. 大于(>)运算符

大于运算符(>)比较两个非空表达式,如果左操作数大于右操作数,则返回true; 否则返回false

expression1 > expression2

例如,要查找薪水大于12000的员工信息,那么可在WHERE子句中使用大于运算符,如下所示:

SELECT 
    employee_id, first_name, last_name, salary
FROM
    employees
WHERE
    salary > 12000
ORDER BY salary DESC;

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

+-------------+------------+-----------+--------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
|         100 | Steven     | Lee       | 24000  |
|         101 | Neena      | Wong      | 17000  |
|         102 | Lex        | Liang     | 17000  |
|         145 | John       | Liu       | 14000  |
|         146 | Karen      | Liu       | 13500  |
|         201 | Michael    | Zhou      | 13000  |
+-------------+------------+-----------+--------+

可以使用ANDOR运算符组合成比较运算符的表达式。 例如,以下语句查找部门ID8并且薪水大于12000的员工信息:

SELECT 
    employee_id, first_name, last_name, salary
FROM
    employees
WHERE
    salary > 12000 AND department_id = 8
ORDER BY salary DESC;

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

+-------------+------------+-----------+--------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
|         145 | John       | Liu       | 14000  |
|         146 | Karen      | Liu       | 13500  |
+-------------+------------+-----------+--------+
2 rows in set

4. 大于等于(>=)运算符

大于或等于(>=)运算符用于比较两个非空表达式。 如果左表达式的计算结果大于右表达式的值,则结果为true

以下是大于或等于运算符的语法:

expression1 >= expression2

例如,以下查询语句用于查找薪水大于或等于9999的员工信息:

SELECT 
    employee_id, first_name, last_name, salary
FROM
    employees
WHERE
    salary >= 9999
ORDER BY salary;

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

+-------------+------------+-----------+--------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
|         204 | Hermann    | Wu        | 10000  |
|         114 | Avg        | Su        | 11000  |
|         108 | Nancy      | Chen      | 12000  |
|         205 | Shelley    | Wu        | 12000  |
|         201 | Michael    | Zhou      | 13000  |
|         146 | Karen      | Liu       | 13500  |
|         145 | John       | Liu       | 14000  |
|         101 | Neena      | Wong      | 17000  |
|         102 | Lex        | Liang     | 17000  |
|         100 | Steven     | Lee       | 24000  |
+-------------+------------+-----------+--------+
10 rows in set

5. 小于或等于(<=)运算符

小于或等于运算符用于比较两个非空表达式,如果左表达式的值小于或等于右表达式的值,则返回true; 否则返回true

以下是小于或等于运算符的语法:

expression1 <= expression2

例如,以下语句用于查找薪水小于或等于3500的员工信息:

SELECT 
    employee_id, first_name, last_name, salary
FROM
    employees
WHERE
    salary <= 3500
ORDER BY salary;

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

+-------------+------------+-----------+--------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
|         119 | Karen      | Zhang     | 2500   |
|         118 | Guy        | Zhang     | 2600   |
|         126 | Irene      | Liu       | 2700   |
|         117 | Sigal      | Zhang     | 2800   |
|         116 | Shelli     | Zhang     | 2900   |
|         115 | Alexander  | Su        | 3100   |
+-------------+------------+-----------+--------+
6 rows in set

在本教程中,您学习了如何使用比较运算符来组成比较表达式,以便根据指定的条件过滤数据。

        原文作者:SQL教程
        原文地址: https://www.yiibai.com/sql/sql-comparison-operators.html
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞