在本教程中,您将了解SQL比较运算符以及如何使用它们来组成过滤数据的条件。SQL比较运算符用于测试两个表达式是否相同,下表说明了SQL中的比较运算符:
编号 | 运算符 | 描述/含意 |
---|---|---|
1 | = | 等于 |
2 | <> | 不等于 |
3 | > | 大于 |
4 | >= | 大于或等于 |
5 | < | 小于 |
6 | <= | 小于或等于 |
7 | != | 不等于 |
比较运算符的结果只能是三个值:true
,false
和unknown
的其中一个。
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不是8
和10
的所有员工信息。
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 |
+-------------+------------+-----------+--------+
可以使用AND
或OR
运算符组合成比较运算符的表达式。 例如,以下语句查找部门ID
是8
并且薪水大于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
在本教程中,您学习了如何使用比较运算符来组成比较表达式,以便根据指定的条件过滤数据。