12.6.1 算术运算符

官方文档地址:12.6.1 Arithmetic Operators


表 12.9 算术运算符

名称描述
%MOD模运算符
*乘法运算符
+加法运算符
-减法运算符
-改变参数的符号
/除法运算符
DIV整数除法

可以使用常用的算术运算符。结果按以下规则确定:

  • -+*的情况下,如果两个操作数都是整数,则以BIGINT(64位)精度计算结果。
  • 如果两个操作数都是整数且其中任何一个是无符号的,则结果为无符号整数。对于减法,如果NO_UNSIGNED_SUBTRACTION SQL 模式被启用,即使所有操作数都是无符号的,结果也是有符号的。
  • 如果+-/*%运算的任一操作数是实值或字符串值,则结果的精度为具有最大精度的操作数的精度。
  • 在使用/执行除法时,当使用两个精确值操作数时,结果保留的小数位数是第一个操作数的小数位数加上div_precision_increment系统变量的值(默认为4)。例如,表达式5.05 / 0.014的结果的刻度是小数点后6位(360.714286)。

这些规则适用于每个操作,比如嵌套计算中每个组件计算的精度。因此,(14620 / 9432456) / (24250 / 9432456)首先解析为(0.0014) / (0.0026),最终结果有8位小数(0.60288653)

由于这些规则和它们的应用方式,应该注意确保计算的组件和子组件使用适当的精度级别。请参见 12.11 强制转换函数和操作符

有关数值表达式求值中溢出处理的信息,参见 11.1.7 超出范围和溢出处理

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

  • +

加法:

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

减法:

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

一元运算-。这个操作符改变操作数的符号。

mysql> SELECT - 2;
        -> -2

注意

如果该操作符与BIGINT一起使用,返回值也是一个BIGINT。这意味着您应该避免在可能具有 −2E63 值的整数使用-

  • *

乘法:

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

最后一个表达式会产生一个错误,因为整数乘法的结果超过了BIGINT计算的64位范围。(参见 11.1 数值数据类型

  • /

除法:

mysql> SELECT 3/5;
        -> 0.60

除 0 产生NULL结果:

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

只有在其结果能被转换为整数的上下文中执行除法时,才使用BIGINT算术计算除法。

  • DIV

整数的除法。去掉除法结果中小数点右边的小数部分。

如果任一操作数具有非整数类型,则将操作数转换为DECIMAL,并在将结果转换为BIGINT之前使用DECIMAL算术进行除法。如果结果超过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的余数。有关更多信息,请参见 12.6.2 数学函数 中对MOD()函数的描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值