邏輯運算符又稱為布爾運算符,用來確認表達式的真和假。MySQL 支持4 種邏輯運算符,如表4-3 所示。
表4-3 MySQL 中的邏輯運算符
運算符 | 作用 |
NOT 或! | 邏輯非 |
AND 或&& | 邏輯與 |
OR 或 || | 邏輯或 |
XOR | 邏輯異或 |
““NOT”或“!”表示邏輯非。返回和操作數相反的結果:當操作數為0(假),則返回值為1,否則值為0。但是有一點除外,那就是NOT NULL 的返回值為NULL,這一點請大家注意。如下例所示:
mysql> select not 0, not 1, not null ; +-------+-------+----------+ | not 0 | not 1 | not null | +-------+-------+----------+ | 1 | 0 | NULL | +-------+-------+----------+ 1 row in set (0.00 sec)
““AND”或“&&”表示邏輯與運算。當所有操作數均為非零值並且不為NULL 時,計算所得結果為1,當一個或多個操作數為0 時,所得結果為0,操作數中有任何一個為NULL 則返回值為NULL。如下例所示:
mysql> select (1 and 1),(0 and 1) ,(3 and 1 ) ,(1 and null); +-----------+-----------+------------+--------------+ | (1 and 1) | (0 and 1) | (3 and 1 ) | (1 and null) | +-----------+-----------+------------+--------------+ | 1 | 0 | 1 | NULL | +-----------+-----------+------------+--------------+ 1 row in set (0.00 sec)
“OR”或“||”表示邏輯或運算。當兩個操作數均為非NULL 值時,如有任意一個操作數為非零值,則結果為1,否則結果為0。當有一個操作數為NULL 時,如另一個操作數為非零值,則結果為1,否則結果為NULL。假如兩個操作數均為NULL,則所得結果為NULL。如下例所示:
mysql> select (1 or 0) ,(0 or 0),(1 or null) ,(1 or 1),(null or null); +----------+----------+-------------+----------+----------------+ | (1 or 0) | (0 or 0) | (1 or null) | (1 or 1) | (null or null) | +----------+----------+-------------+----------+----------------+ | 1 | 0 | 1 | 1 | NULL | +----------+----------+-------------+----------+----------------+ 1 row in set (0.00 sec)
“XOR”表示邏輯異或。當任意一個操作數為NULL 時,返回值為NULL。對於非NULL 的操作數,如果兩個的邏輯真假值相異,則返回結果1;否則返回0。如下例所示:
mysql> select 1 xor 1 ,0 xor 0,1 xor 0,0 xor 1,null xor 1; +---------+---------+---------+---------+------------+ | 1 xor 1 | 0 xor 0 | 1 xor 0 | 0 xor 1 | null xor 1 | +---------+---------+---------+---------+------------+ | 0 | 0 | 1 | 1 | NULL | +---------+---------+---------+---------+------------+ 1 row in set (0.00 sec)