算术运算符
seekdb 支持常用的算术运算符。
算术运算符概览
seekdb 当前版本所支持的算术运算符的详细信息如下表所示。
| 运算符 | 操作数类型 | 含义 |
|---|---|---|
+ | 一元/二元 | 一元表示正数,二元表示加法。 |
- | 一元/二元 | 一元表示负数,二元表示减法。 |
* | 二元 | 乘法。 |
/ | 二元 | 普通除法。 |
DIV | 二元 | 整数除法,返回商数。 |
MOD 或 % | 二元 | 整数除法,返回余数。 N % M 或 N MOD M 表示返回 N 除以 M 的余数。 |
说明
运算规则
对于整数除法的运算规则特做以下说明:
-
商数不论正负,统一向 0 取整。
-
余数正负与被除数相同。
示例如下:
SELECT (-7) DIV (3.6), (-7) MOD (3.6);
+----------------+----------------+
| (-7) DIV (3.6) | (-7) MOD (3.6) |
+----------------+----------------+
| -1 | -3.4 |
+----------------+----------------+
1 row in set (0.001 sec)
SELECT (-7) DIV (-3.4), (-7) % (-3.4);
+-----------------+---------------+
| (-7) DIV (-3.4) | (-7) % (-3.4) |
+-----------------+---------------+
| 2 | -0.2 |
+-----------------+---------------+
1 row in set (0.001 sec)
运算结果
根据以下规则确定算术运算的结果:
-
对于
-、+和*,如果两个操作数都是整数,则结果以BIGINT(64 位)精度 计算。 -
如果两个操作数都是整数且其中一个是无符号的,则结果为无符号整数。对于减法,如果启用了
NO_UNSIGNED_SUBTRACTIONSQL 模式,即使任何操作数是无符号的,结果也是有符号的。 -
如果
+、-、/、*和%的操作数是实数或字符串值,则结果的精度是具有最大精度操作数的精度。 -
在使用
/进行除法运算时,使用两个精确值操作数时结果的小数位数是第一个操作数的小数位数加上div_precision_increment系统变量的值(默认为 4)。例如,表达式 5.15/0.013 的结果有六个小数位 (396.153846)。