在本教學中,您將瞭解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
在本教學中,您學習了如何使用比較運算符來組成比較運算式,以便根據指定的條件過濾數據。