只读分析实例支持大部分 MySQL 的四则运算逻辑,但在部分场景下仍存在限制和不兼容。本文介绍只读分析实例对四则运算的支持情况,并列出每个运算符对入参数据类型的支持范围。文档中未列出的入参类型与使用方式均不支持。
四则运算使用限制
Decimal 类型的除法运算:结果的小数位数会基于被除数的小数位数加4进行截断。例如
Decimal(9, 1) / Decimal(9, 1),结果的小数位数会基于5 进行截断。Decimal 的加、减、乘、除运算:若结果的总长度超过65,则会报错提示 "out of range"。因为在只读分析实例中,Decimal 支持的最大数据长度为65。
任意数字类型与浮点类型(float、double)进行数学运算:均会存在精度误差问题,核心原因是 float、double 等浮点类型本身就不具备严格精度。在 MySQL 实践中也不建议将数字类型与浮点类型进行数学计算。
非数值类型的四则运算:涉及隐式类型转换,受限于只读分析实例对
CAST 的支持情况。在某些场景下,如果 CAST 不支持,相关四则运算也不支持。详细的 CAST 支持情况,请参见 类型转换函数支持说明。四则运算支持类型
+ 加运算符
语法:
op1 + op2op1支持的数据类型:int、bigint、float、double、decimal。
op2支持的数据类型:int、bigint、float、double、decimal。
- 减运算符
语法:
op1 - op2op1支持的数据类型:int、bigint、float、double、decimal。
op2支持的数据类型:int、bigint、float、double、decimal。
* 乘运算符
语法:
op1 * op2op1支持的数据类型:int、bigint、float、double、decimal。
op2支持的数据类型:int、bigint、float、double、decimal。
/ 除运算符
语法:
op1 / op2op1支持的数据类型:int、bigint、float、double、decimal。
op2支持的数据类型:int、bigint、float、double、decimal。
% 取余运算符
语法:
op1 % op2op1支持的数据类型:int、bigint、float、double、decimal。
op2支持的数据类型:int、bigint、float、double、decimal。