1. 程式人生 > 實用技巧 >MySQL教程55-MySQL比較運算子

MySQL教程55-MySQL比較運算子

當使用 SELECT 語句進行查詢時,MYSQL 允許使用者對錶達式的左邊運算元和右邊運算元進行比較,比較結果為真,則返回 1,為假則返回 0,比較結果不確定則返回 NULL。MySQL支援的比較運算子如下表所示。

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,上面我們都進行了說明。