文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  邏輯運算子

14.4.3 邏輯運算子

表 14.5 邏輯運算子

名稱 描述
AND, && 邏輯 AND
NOT, ! 否定值
OR, || 邏輯 OR
XOR 邏輯 XOR

在 SQL 中,所有邏輯運算子的求值結果為 TRUEFALSENULLUNKNOWN)。在 MySQL 中,這些值實作為 1 (TRUE)、0 (FALSE) 和 NULL。大部分情況下,這與不同的 SQL 資料庫伺服器相同,儘管某些伺服器可能會傳回任何非零值作為 TRUE

MySQL 會將任何非零、非 NULL 值求值為 TRUE。例如,下列陳述式都會評估為 TRUE

mysql> SELECT 10 IS TRUE;
-> 1
mysql> SELECT -10 IS TRUE;
-> 1
mysql> SELECT 'string' IS NOT NULL;
-> 1
  • 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 相同的方式評估。

    ! 運算子為非標準擴充功能,已棄用;預期會在未來的 MySQL 版本中移除。必要時,應調整應用程式以改為使用標準 SQL NOT 運算子。

  • AND, &&

    邏輯 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 版本中移除對其的支援。必要時,應調整應用程式以改為使用標準 SQL AND 運算子。

  • OR, ||

    邏輯 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_CONCAT SQL 模式,|| 會表示 SQL 標準字串串連運算子(如 CONCAT())。

    || 運算子為非標準擴充功能,已棄用;預期會在未來的 MySQL 版本中移除對其的支援。必要時,應調整應用程式以改為使用標準 SQL OR 運算子。例外情況:如果啟用 PIPES_AS_CONCAT,則不會套用棄用,因為在此情況下,|| 表示字串串連。

  • 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) and b)