提供常用的算術運算子。結果會根據下列規則判斷
如果兩個運算元都是整數,且其中任何一個是無符號的,則結果是無符號整數。對於減法,如果啟用
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
乘法
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
算術計算除法。整數除法。從除法結果捨棄小數點右側的任何小數部分。
如果任一運算元具有非整數類型,則運算元會先轉換為
DECIMAL
,然後使用DECIMAL
算術除法,再將結果轉換為BIGINT
。如果結果超出BIGINT
範圍,則會發生錯誤。mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2; -> 2, -2, -2, 2
模數運算。傳回
N
除以M
的餘數。如需詳細資訊,請參閱章節 14.6.2,「數學函式」中MOD()
函式的說明。