Documentation Home

12.6.1 算术运算符

表 12.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)。

由于这些规则及其应用方式,应注意确保计算的组件和子组件使用适当的精度级别。请参阅 第 12.11 节,“Cast 函数和运算符”

有关数值表达式评估中溢出处理的信息,请参阅第 11.1.7 节,“超出范围和溢出处理”

算术运算符适用于数字。对于其他类型的值,可以使用替代操作。例如,要添加日期值,请使用DATE_ADD(); 参见第 12.7 节,“日期和时间函数”

  • +

    添加:

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

    减法:

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

    一元减号。该运算符更改操作数的符号。

    mysql> SELECT - 2;
            -> -2
    笔记

    如果此运算符与 a 一起使用 BIGINT,则返回值也是 a BIGINT。这意味着您应该避免使用-可能具有 −2 63值的整数。

  • *

    乘法:

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

    最后一个表达式会产生错误,因为整数乘法的结果超出了 64 位的 BIGINT计算范围。(请参阅 第 11.1 节,“数字数据类型”。)

  • /

    分配:

    mysql> SELECT 3/5;
            -> 0.60

    除以零产生NULL结果:

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

    BIGINT仅当在结果转换为整数的上下文中执行 除法时,才使用算术计算除法 。

  • DIV

    整数除法。从除法结果中丢弃小数点右侧的任何小数部分。

    如果任一操作数具有非整数类型,则在DECIMALDECIMAL 结果转换为 BIGINT. 如果结果超出 BIGINT范围,则会发生错误。

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

    模运算。返回 N除以 的余数M。有关详细信息,请参阅第 12.6.2 节“数学函数”MOD()中的 函数说明。