MySQL 5.7发布说明
本节讨论了精确的数学舍入圆的()
功能和插入到具有精确值类型的列中(小数
和整数)。
这圆的()
根据其参数是否精确或近似,以不同的方式
下面的例子展示了精确值和近似值的舍入差异:
MySQL>选择圆形(2.5),圆形(25E-1);+ ------------ + -------------- + |圆形(2.5)|圆形(25E-1)|+ ------------ + -------------- + |3 |2 |+ ------------ + -------------- +
对于插入到小数
或整数列,目标是精确的数据类型,因此舍入使用“距离零一半,“无论是否插入值是精确的还是近似值:
mysql> CREATE TABLE t (d DECIMAL(10,0));mysql> INSERT INTO t VALUES(2.5),(2.5 e0);查询OK, 2行影响,2 warning (0.00 sec)记录:2 duplicate: 0 warning: 2 mysql> SHOW warnings;+-------+------+----------------------------------------+ | 水平| |消息代码 | +-------+------+----------------------------------------+ | 注意| 1265 |数据截断列在第一行' d ' | | 1265 | |注意数据截断' d '行2列 | +-------+------+----------------------------------------+ 2行集(0.00秒)mysql >SELECT d FROM t;+------+ | d | +------+ | 3 | | 3 | +------+ 2行集(0.00秒)
这显示警告
声明显示由于分数部分的舍入而被截断生成的注释。这种截断并非错误,即使在严格的SQL模式下也是如此(参见第12.22.3节“表达处理”)。