在SQL中,所有邏輯 操作符的求值所得結果均為 TRUE、FALSE或 NULL (UNKNOWN)。在 MySQL中,它們體現為 1 (TRUE)、 0 (FALSE)和 NULL。其大多數都與不同的數據庫SQL通用,然而一些服務器對TRUE的返回值可能是任意一個非零值。
- NOT !
邏輯 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相同。
- AND &&
邏輯AND。當所有操作數均為非零值、并且不為NULL時,計算所得結果為 1 ,當一個或多個操作數為0 時,所得結果為 0 ,其余情況返回值為 NULL 。
mysql> SELECT 1 && 1;
-> 1
mysql> SELECT 1 && 0;
-> 0
mysql> SELECT 1 && NULL;
-> NULL
mysql> SELECT 0 && NULL;
-> 0
mysql> SELECT NULL && 0;
-> 0
- OR ||
邏輯 OR。當兩個操作數均為非 NULL值時,如有任意一個操作數為非零值,則結果為1,否則結果為0。當有一個操作數為NULL時,如另一個操作數為非零值,則結果為1,否則結果為 NULL 。假如兩個操作數均為 NULL,則所得結果為 NULL。
mysql> SELECT 1 || 1;
-> 1
mysql> SELECT 1 || 0;
-> 1
mysql> SELECT 0 || 0;
-> 0
mysql> SELECT 0 || NULL;
-> NULL
mysql> SELECT 1 || NULL;
-> 1
- XOR
邏輯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;
-> 1
a XOR b 的計算等同于 (a AND (NOT b)) OR ((NOT a)和 b)。
同樣見 12.1.1節,“操作符優先級”。