MySQL教程54-MySQL邏輯運算子
阿新 • • 發佈:2020-08-19
邏輯運算子又稱為布林運算子,用來確定表示式的真和假。MySQL中支援的邏輯運算子如下表所示。
運算子 | 作用 |
---|---|
NOT 或者 ! | 邏輯非 |
AND 或者 && | 邏輯與 |
OR 和 || | 邏輯或 |
XOR | 邏輯異或 |
下面分別討論 MySQL 邏輯運算子的使用方法。
NOT
和!
都是邏輯非運算子,返回和運算元相反的結果,具體語法規則為:
- 當運算元為 0(假)時,返回值為 1;
- 當運算元為非零值時,返回值為 0;
- 當運算元為 NULL 時,返回值為 NULL。
【例項1】分別使用非運算子 NOT 或者 ! 進行邏輯判斷,執行結果如下:
由執行結果可以看出,NOT 1+1
! 1+1
的返回值不同,這是因為 NOT 與 ! 的優先順序不同:
- NOT 的優先順序低於 +,因此
NOT 1+1
相當於NOT(1+1)
,先計算1+1
,然後再進行 NOT 運算,由於運算元不為 0,因此NOT 1+1
的結果是 0; - 相反,! 的優先級別要高於 +,因此
! 1+1
相當於(!1)+1
,先計算!1
結果為 0,再加 1,最後結果為 1。
注意: 在使用運算子運算時,一定要注意運算子的優先順序,如果不能確定計算順序,最好使用括號,以保證運算結果的正確。
邏輯與運算子(AND 或者 &&)
AND 和 && 都是邏輯與運算子,具體語法規則為:
- 當所有運算元都為非零值並且不為 NULL 時,返回值為 1;
- 當一個或多個運算元為 0 時,返回值為 0;
- 運算元中有任何一個為 NULL 時,返回值為 NULL。
【例項2】分別使用與運算子 AND 和 && 進行邏輯判斷,執行結果如下:
由結果可以看到,AND 和 && 的作用相同。1 AND-1
中沒有 0 或者 NULL,所以返回值為 1;1 AND 0
中有運算元 0,所以返回值為 0;1 AND NULL
雖然有 NULL,所以返回值為 NULL。
注意:AND 運算子可以有多個運算元,但要注意多個運算元運算時,AND 兩邊一定要使用空格隔開,不然會影響結果的正確性。
邏輯或運算子(OR 或者 ||)
- 當兩個運算元都為非 NULL 值時,如果有任意一個運算元為非零值,則返回值為 1,否則結果為 0;
- 當有一個運算元為 NULL 時,如果另一個運算元為非零值,則返回值為 1,否則結果為NULL;
- 假如兩個運算元均為 NULL 時,則返回值為 NULL。
【例項3】分別使用或運算子 OR 和 || 進行邏輯判斷,執行結果如下:
由結果可以看到,OR 和 || 的作用相同。下面是對各個結果的解析:
1 OR -1 OR 0
含有 0,但同時包含有非 0 的值 1 和 -1,所以返回結果為 1;1 OR 2
中沒有運算元 0,所以返回結果為 1;1 OR NULL
雖然有 NULL,但是有運算元 1,所以返回結果為 1;0 OR NULL
中沒有非 0 值,並且有 NULL,所以返回值為 NULL;NULL OR NULL
中只有NULL,所以返回值為NULL。
異或運算(XOR 運算子)
XOR 表示邏輯異或,具體語法規則為:
- 當任意一個運算元為 NULL 時,返回值為 NULL;
- 對於非 NULL 的運算元,如果兩個運算元都是非 0 值或者都是 0 值,則返回值為 0;
- 如果一個為0值,另一個為非 0 值,返回值為 1。
【例項4】使用異或運算子 XOR 進行邏輯判斷,SQL語句如下:
由結果可以看到:
1 XOR 1
和0 XOR 0
中運算子兩邊的運算元都為非零值,或者都是零值,因此返回 0;1 XOR 0
中兩邊的運算元,一個為 0 值,另一個為非 0 值,所以返回值為 1;1 XOR NULL
中有一個運算元為 NULL,所以返回值為 NULL;1 XOR 1 XOR 1
中有多個運算元,運算子相同,因此運算順序從左到右依次計算,1 XOR 1
的結果為 0,再與 1 進行異或運算,所以返回值為 1。
提示:a XOR b 的計算等同於 (a AND (NOT b))或者 ((NOT a) AND b)。