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


14.6.1 算術運算子

表格 14.9 算術運算子

名稱 描述
%MOD 模數運算子
* 乘法運算子
+ 加法運算子
- 減法運算子
- 變更引數的符號
/ 除法運算子
DIV 整數除法

提供常用的算術運算子。結果會根據下列規則判斷

  • -+* 的情況下,如果兩個運算元都是整數,則會以 BIGINT (64 位元) 精確度計算結果。

  • 如果兩個運算元都是整數,且其中任何一個是無符號的,則結果是無符號整數。對於減法,如果啟用 NO_UNSIGNED_SUBTRACTION SQL 模式,則即使有運算元是無符號的,結果也會是有符號的。

  • 如果 +-/*% 的任何運算元是實數或字串值,則結果的精確度是具有最大精確度的運算元的精確度。

  • 在使用兩個精確值運算元時,以 / 執行的除法,其結果的小數位數是第一個運算元的小數位數加上 div_precision_increment 系統變數的值(預設為 4)。例如,運算式 5.05 / 0.014 的結果會有六位小數 (360.714286)。

這些規則會應用於每個運算,因此巢狀計算表示每個元件的精確度。因此,(14620 / 9432456) / (24250 / 9432456) 會先解析為 (0.0014) / (0.0026),最後結果會有 8 位小數 (0.60288653)。

由於這些規則以及它們的應用方式,因此應注意確保計算的元件和子元件使用適當的精確度層級。請參閱章節 14.10,「轉換函式與運算子」

如需數值運算式求值中處理溢位的相關資訊,請參閱章節 13.1.7,「範圍外與溢位處理」

算術運算子適用於數字。對於其他類型的值,可能會提供替代運算。例如,若要加入日期值,請使用 DATE_ADD();請參閱章節 14.7,「日期與時間函式」

  • +

    加法

    mysql> SELECT 3+5;
            -> 8
  • -

    減法

    mysql> SELECT 3-5;
            -> -2
  • -

    一元負號。此運算子會變更運算元的符號。

    mysql> SELECT - 2;
            -> -2
    注意

    如果此運算子與 BIGINT 一起使用,則傳回值也會是 BIGINT。這表示您應該避免在值可能為 −263 的整數上使用 -

  • *

    乘法

    mysql> SELECT 3*5;
            -> 15
    mysql> SELECT 18014398509481984*18014398509481984.0;
            -> 324518553658426726783156020576256.0
    mysql> SELECT 18014398509481984*18014398509481984;
            -> out-of-range error

    最後一個運算式會產生錯誤,因為整數乘法的結果超出 BIGINT 計算的 64 位元範圍。(請參閱章節 13.1,「數值資料類型」。)

  • /

    除法

    mysql> SELECT 3/5;
            -> 0.60

    除以零會產生 NULL 結果

    mysql> SELECT 102/(1-1);
            -> NULL

    僅當在結果會轉換為整數的內容中執行時,才會使用 BIGINT 算術計算除法。

  • DIV

    整數除法。從除法結果捨棄小數點右側的任何小數部分。

    如果任一運算元具有非整數類型,則運算元會先轉換為 DECIMAL,然後使用 DECIMAL 算術除法,再將結果轉換為 BIGINT。如果結果超出 BIGINT 範圍,則會發生錯誤。

    mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2;
            -> 2, -2, -2, 2
  • N % MN MOD M

    模數運算。傳回 N 除以 M 的餘數。如需詳細資訊,請參閱章節 14.6.2,「數學函式」MOD() 函式的說明。