Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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 节,“Cast 函数和操作符”

有关数字表达式评估中的溢出处理,请参阅 第 13.1.7 节,“溢出和溢出处理”

算术运算符应用于数字。对于其他类型的值,可能有备用的操作可用。例如,要添加日期值,请使用 DATE_ADD();请参阅 第 14.7 节,“日期和时间函数”

  • +

    加法:

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

    减法:

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

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

    mysql> SELECT - 2;
            -> -2
    Note

    如果使用该运算符与 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 % M, N MOD M

    模运算。返回 N 除以 M 的余数。有关更多信息,请参阅 MOD() 函数的描述在 第 14.6.2 节,「数学函数」 中。