可以使用常用的算術運算子。結果會根據下列規則決定
如果兩個運算元都是整數,而且其中任何一個是無符號的,則結果會是無符號整數。對於減法,如果啟用
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()
函數的說明。