如图,使用表字段进行计算时精度会丢失,在 2.1.1和2.1.2 版本都遇到了
字段类型是 DECIMAL(38, 12) NULL
这个符合预期。由于decimal的precision最大是38,所以
cast(est_wt_pct as DECIMAL(38, 12)) *cast(est_wt_pct as DECIMAL(38, 12))
的结果,为了尽量保证整数部分的结果可以容纳。只保留了6位小数。结果是decimal(38,6)。
union all的策略同样是尽量保持整数部分,所以union all的结果同样是decimal(38,6)。
如果希望当decimal溢出时保留更多的小数位数,可以调整参数decimal_overflow_scale。此参数默认值是6