暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的函数和运算符 - 数值函数和运算符 - 算术运算符

林员外聊编程 2021-06-08
221

算术运算符

 

名称

介绍

%,MOD

取模运算符

*

乘法运算符

+

加法运算符

-

减法运算符

-

改变参数的符号

/

除法运算符

DIV

整数除法

 

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

 

● 在运算 -+、和 * 的情况下,如果两个操作数都是整数,则使用 BIGINT64位)精度计算结果。

 

● 如果两个操作数都是整数,而其中任何一个都是无符号的,则结果是无符号整数。对于减法,如果启用了 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)

 

由于这些规则及其应用方式,应注意确保计算的组件和子组件使用适当的精度级别。

 

算术运算符适用于数字。对于其他类型的值,可以使用替代操作。例如,要增加日期值,请使用 DATE_ADD()

 

● +

 

加法:

 

mysql> SELECT 3+5;
-> 8

 

● -

 

减法:

 

mysql> SELECT 3-5;
-> -2

 

● -

 

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

 

mysql> SELECT - 2;
-> -2

 

注意

 

如果此运算符用于 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 位范围。

 

● /

 

除法:

 

mysql> SELECT 3/5;
-> 0.60

 

被零除产生 NULL 结果:

 

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

 

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

 

● DIV

 

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

 

如果任一操作数的类型为非整数,则在将结果转换为 BIGINT 之前,操作数将转换为 DECIMAL 并使用 DECIMAL 算术进行除法。如果结果超出 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 的余数。

 

 

官方文档:

https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html


文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论