首页 > 解决方案 > 红移将十进制转换为十进制

问题描述

为什么将小数转换为小数会丢失所有小数?例如,

SELECT 1.5::DECIMAL

退货2

标签: sqlselectcastingdecimalamazon-redshift

解决方案


十进制数具有精度(整数中有效数字的总数)和小数位数(小数位数)。

在 Redshift 中,默认精度为18默认比例为0,并且在投射时应用自动舍入,如文档中所述

规模

值的小数部分中的小数位数,小数点右侧。[...]如果未指定,默认比例为 0。

[...]

如果加载到表中的输入值的比例大于列的比例,则将该值四舍五入到指定的比例。

因此,您需要在投射时指定比例,例如:

SELECT CAST(1.5 AS DECIMAL(10, 5))

推荐阅读