MySQL教程55-MySQL比較運算子
當使用 SELECT 語句進行查詢時,MYSQL 允許使用者對錶達式的左邊運算元和右邊運算元進行比較,比較結果為真,則返回 1,為假則返回 0,比較結果不確定則返回 NULL。MySQL支援的比較運算子如下表所示。
運算子 | 作用 |
---|---|
= | 等於 |
<=> | 安全的等於 |
<> 或者 != | 不等於 |
<= | 小於等於 |
>= | 大於等於 |
> | 大於 |
IS NULL 或者 ISNULL | 判斷一個值是否為空 |
IS NOT NULL | 判斷一個值是否不為空 |
BETWEEN AND | 判斷一個值是否落在兩個值之間 |
比較運算子可以用於比較數字、字串和表示式的值。注意,字串的比較是不區分大小寫的。
1) 等於運算(=)
= 運算子用來比較兩邊的運算元是否相等,相等的話返回 1,不相等的話返回 0。具體的語法規則如下:
- 若有一個或兩個運算元為 NULL,則比較運算的結果為 NULL。
- 若兩個運算元都是字串,則按照字串進行比較。
- 若兩個運算元均為整數,則按照整數進行比較。
- 若一個運算元為字串,另一個運算元為數字,則 MySQL 可以自動將字串轉換為數字。
注意:NULL 不能用於 = 比較。
【例項1】使用 = 進行相等判斷,SQL 語句如下:
對執行結果的分析:
2=2
和'2' =2
的返回值相同,都為 1,因為在進行判斷時,MySQL 自動進行了轉換,把字元 '2' 轉換成了數字 2。'b'='b'
為相同的字元比較,因此返回值為 1。- 表示式
1+3
和表示式2+2
的結果都為 4,因此結果相等,返回值為 1; - 由於 = 不能用於空值 NULL 的判斷,因此
NULL=null
的返回值為 NULL。
2) 安全等於運算子(<=>)
<=> 操作符和 = 操作符類似,不過 <=> 可以用來判斷 NULL 值,具體語法規則為:
- 當兩個運算元均為 NULL 時,其返回值為 1 而不為 NULL;
- 而當一個運算元為 NULL 時,其返回值為 0 而不為 NULL。
【例項2】使用 <=> 進行相等的判斷,SQL 語句如下:
3) 不等於運算子(<> 或者 !=)
與 = 的作用相反,<> 和 != 用於判斷數字、字串、表示式是否不相等。對於 <> 和 !=,如果兩側運算元不相等,返回值為 1,否則返回值為 0;如果兩側運算元有一個是 NULL,那麼返回值也是 NULL。
【例項3】使用 <> 和 != 進行不相等的判斷,SQL 語句如下:
由結果可以看到,兩個不等於運算子作用相同,都可以進行數字、字串、表示式的比較判斷。
4) 小於等於運算子(<=)
<= 是小於等於運算子,用來判斷左邊的運算元是否小於或者等於右邊的運算元;如果小於或者等於,返回值為 1,否則返回值為 0;如果兩側運算元有一個是 NULL,那麼返回值也是 NULL。
【例項4】使用 <= 進行比較判斷,SQL 語句如下:
由結果可以看到:
- 左邊運算元小於或者等於右邊時,返回值為 1,例如 4<=4;
- 當左邊運算元大於右邊時,返回值為 0,例如“good”第 3 個位置的“o”字元在字母表中的順序大於“god”中的第 3 個位置的“d”字元,因此返回值為0;
- 同樣,比較 NULL 值時返回 NULL。
5) 小於運算子(<)
< 是小於運算子,用來判斷左邊的運算元是否小於右邊的運算元;如果小於,返回值為 1,否則返回值為 0;如果兩側運算元有一個是 NULL,那麼返回值也是 NULL。
【例項5】使用 < 進行比較判斷,SQL 語句如下:
由結果可以看到:
- 當左邊運算元小於右邊時,返回值為 1,例如 1<2;
- 當左邊運算元大於右邊時,返回值為 0,例如“good”第 3 個位置的“o”字元在字母表中的順序大於“god”中的第 3 個位置的“d”字元,因此返回值為 0;
- 同樣,比較 NULL 值時返回 NULL。
6) 大於等於運算子(>=)
>= 是大於等於運算子,用來判斷左邊的運算元是否大於或者等於右邊的運算元;如果大於或者等於,返回值為 1,否則返回值為 0;如果兩側運算元有一個是 NULL,那麼返回值也是 NULL。
【例項6】使用 >= 進行比較判斷,SQL 語句如下:
由結果可以看到:
- 左邊運算元大於或者等於右邊時,返回值為 1,例如 4>=4;
- 當左邊運算元小於右邊時,返回值為 0,例如 1>=2;
- 同樣,比較 NULL 值時返回 NULL。
7) 大於運算子(>)
> 是大於運算子,用來判斷左邊的運算元是否大於右邊的運算元;如果大於,返回值為 1,否則返回值為 0;如果兩側運算元有一個是 NULL,那麼返回值也是 NULL。
【例項7】使用 > 進行比較判斷,SQL 語句如下:
由結果可以看到:
- 左邊運算元大於右邊時,返回值為 1,例如 5.5>5;
- 當左邊運算元小於右邊時,返回 0,例如 1>2;
- 同樣,比較 NULL 值時返回 NULL。
8) IS NULL(ISNULL) 和 IS NOT NULL 運算子
IS NULL 或 ISNULL 運算子用來檢測一個值是否為 NULL,如果為 NULL,返回值為 1,否則返回值為 0。ISNULL 可以認為是 IS NULL 的簡寫,去掉了一個空格而已,兩者的作用和用法都是完全相同的。
IS NOT NULL 運算子用來檢測一個值是否為非 NULL,如果是非 NULL,返回值為 1,否則返回值為 0。
【例項8】使用 IS NULL、ISNULL 和 IS NOT NULL 判斷 NULL 值和非 NULL 值,SQL 語句如下:
由結果可以看到,IS NULL 和 ISNULL 的作用相同,只是寫法略有不同。ISNULL 和 IS NOT NULL 的返回值正好相反。
9) BETWEEN AND 運算子
BETWEEN AND 運算子用來判斷表示式的值是否位於兩個數之間,或者說是否位於某個範圍內,它的語法格式如下:
expr BETWEEN min AND max
expr 表示要判斷的表示式,min 表示最小值,max 表示最大值。如果 expr 大於等於 min 並且小於等於 max,那麼返回值為 1,否則返回值為 0。
【例項9】使用 BETWEEN AND 進行值區間判斷,輸入 SQL 語句如下:
由結果可以看到:
- 4 在端點值區間內或者等於其中一個端點值,BETWEEN AND 表示式返回值為 1;
- 12 並不在指定區間內,因此返回值為 0;
- 對於字串型別的比較,按字母表中字母順序進行比較,“x”不在指定的字母區間內,因此返回值為 0,而“b”位於指定字母區間內,因此返回值為 1。
總結
使用比較運算子時需要注意空值 NULL,大部分比較運算子遇到 NULL 時也會返回 NULL,上面我們都進行了說明。