在 SQL 中,所有邏輯運算子都會評估為 TRUE、FALSE 或 NULL (UNKNOWN)。在 MySQL 中,這些會實作為 1 (TRUE)、0 (FALSE) 和 NULL。雖然有些伺服器可能會傳回任何非零值作為 TRUE,但大部分對不同的 SQL 資料庫伺服器而言是通用的。
MySQL 會將任何非零、非 NULL 值評估為 TRUE。例如,下列陳述式都會評估為 TRUE
mysql> SELECT 10 IS TRUE;
-> 1
mysql> SELECT -10 IS TRUE;
-> 1
mysql> SELECT 'string' IS NOT NULL;
-> 1
邏輯 NOT。如果運算元為
0,則評估為1;如果運算元為非零,則評估為0,而NOT NULL則傳回NULL。mysql> SELECT NOT 10; -> 0 mysql> SELECT NOT 0; -> 1 mysql> SELECT NOT NULL; -> NULL mysql> SELECT ! (1+1); -> 0 mysql> SELECT ! 1+1; -> 1最後一個範例會產生
1,因為表達式評估方式與(!1)+1相同。!運算子是非標準擴充功能,且已過時;預期會在未來版本的 MySQL 中移除。必要時,應調整應用程式以改用標準 SQLNOT運算子。邏輯 AND。如果所有運算元皆為非零且非
NULL,則評估為1;如果有一個或多個運算元為0,則評估為0;否則會傳回NULL。mysql> SELECT 1 AND 1; -> 1 mysql> SELECT 1 AND 0; -> 0 mysql> SELECT 1 AND NULL; -> NULL mysql> SELECT 0 AND NULL; -> 0 mysql> SELECT NULL AND 0; -> 0&&運算子是非標準擴充功能,且已過時;預期會在未來版本的 MySQL 中移除對它的支援。必要時,應調整應用程式以改用標準 SQLAND運算子。邏輯 OR。當兩個運算元皆非
NULL時,如果有任何運算元為非零,結果為1,否則為0。若有NULL運算元,如果另一個運算元為非零,結果為1,否則為NULL。如果兩個運算元皆為NULL,結果為NULL。mysql> SELECT 1 OR 1; -> 1 mysql> SELECT 1 OR 0; -> 1 mysql> SELECT 0 OR 0; -> 0 mysql> SELECT 0 OR NULL; -> NULL mysql> SELECT 1 OR NULL; -> 1注意如果啟用
PIPES_AS_CONCATSQL 模式,||表示 SQL 標準字串串連運算子 (如CONCAT())。||運算子是非標準的擴充功能,且已被棄用;預期在未來版本的 MySQL 中會移除對它的支援。必要時,應用程式應調整為使用標準的 SQLOR運算子。例外情況:如果啟用PIPES_AS_CONCAT,則不適用棄用,因為在這種情況下,||表示字串串接。邏輯 XOR。 如果任一運算元為
NULL,則傳回NULL。對於非NULL運算元,如果非零運算元的數量為奇數,則評估為1,否則傳回0。mysql> SELECT 1 XOR 1; -> 0 mysql> SELECT 1 XOR 0; -> 1 mysql> SELECT 1 XOR NULL; -> NULL mysql> SELECT 1 XOR 1 XOR 1; -> 1a XOR b在數學上等於(a AND (NOT b)) OR ((NOT a) and b)。