MySQL 8.3 Release Notes
MySQL 提供了精度数学支持:数值处理结果非常准确,且对无效值的控制非常严格。精度数学基于以下两个特征:
-
SQL 模式控制服务器对无效数据的接受或拒绝。
-
MySQL 固定点算术库。
这些特征对数值操作和标准 SQL 的符合性有几个重要的影响:
-
精确计算:对于精确值数字,计算不引入浮点错误。相反,使用精确精度。例如,MySQL 将数字
.0001
视为精确值,而不是近似值, summing 它 10,000 次将产生精确结果1
,而不是近似于 1 的值。 -
明确定义的舍入行为:对于精确值数字,
ROUND()
的结果取决于其参数,而不是环境因素,如底层 C 库的工作方式。 -
平台独立性:精确数字值的操作在不同的平台上,如 Windows 和 Unix,都是相同的。
-
对无效值的控制:溢出和除以零是可检测的,可以作为错误处理。例如,您可以将太大的值视为错误,而不是将其截断以适应列的数据类型。类似地,您可以将除以零视为错误,而不是将其作为产生
NULL
结果的操作。选择哪种方法取决于服务器 SQL 模式的设置。
以下讨论涵盖了精度数学的几个方面,包括与旧应用程序的可能不兼容性。在结尾,提供了一些示例,展示了 MySQL 如何精确地处理数值操作。有关控制 SQL 模式的信息,请参阅 第 7.1.11 节,“服务器 SQL 模式”。