sql - Hive 将字符串转换为浮点十进制

标签 sql casting hive

我正在尝试将具有可变十进制的字符串字段转换为 double 。我遇到的问题是因为小数是可变的,可以是以下任何一种:

359.879999
35.8799999
3.59879999

(将小数点移动到任何你想要的位置......但字段的长度始终为 9)

我试图做:
cast(RECURR as float) as RECURR

但这只是返回:
359.880004882813

我试过了:
cast(RECURR as decimal) as RECURR

然后返回:
360

最佳答案

试试怎么样:

select cast(recurr as decimal(19, 9))

这应该适用于小数位潜伏的任何地方。

请注意,未使用的小数位将为零。

关于sql - Hive 将字符串转换为浮点十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945389/

相关文章:

mysql - 选择多个唯一类别 ID 的最新条目

sql - 如何根据单个列值有条件地限制结果

pointers - 如何将接口(interface)实现指针转换为接口(interface)指针?

c++ - 模板化类型转换运算符和偏特化

sql - 将 float 转换为 varchar 时 0 * - 1 = -0 奇怪的结果

sql - 如何构建该查询(求和、分组依据)

delphi - 如何将整数转换为枚举类型?

hadoop - 使用 hive.optimize.sort.dynamic.partition 选项避免单个文件

hadoop - 如何在 oozie 工作流的决策中使用配置单元查询输出

hadoop - 如何在Hive 3中启用LLAP?