【发布时间】:2021-11-06 04:50:51
【问题描述】:
我希望确定多列中的哪种列类型最精确,可以将数据合并到一个联合列中。这些类型可能因数字类型而异:float、long、double,以及 decimal 的不同精度和小数位数。我的问题是,如何确定哪个是“最精确”的,以免在转换过程中因截断而丢失数据?一个例子,我有这样的列:
decimal(10,0)
decimal(18,3)
decimal(10,6)
long
double
float
我需要将所有这些列合并为一种不会丢失任何数据的数据类型。结果数据类型是什么?我的想法是 decimal > double > float > long 所以结果类型将是 decimal 然后我们采用最大比例 6 并将其添加到最大精度 18 减去最大精度缩放 3 以获得类型 decimal(21, 6)。这将保留第 3 列小数点右侧 6 位,但也允许第 2 列小数点左侧 15 位。
【问题讨论】:
-
您使用的是哪个 dbms?我希望 dbms 选择正确的结果数据类型。
-
这是一个带有显式类型的 Spark 应用程序(不能加入不同的数据类型)。我正在尝试构建由具有自己类型的不同来源填充的基础表的架构。我必须将这些值从文本文件转换为统一类型