Hive从Double转换为String不是科学的

时间:2015-09-15 01:19:14

标签: hive

我有一个列double类型的表,我试图将它从double转换为string。

然而,当我使用cast命令时,它“巧妙地”将其转换为科学记数法。如下所示:

select 
    number, 
    cast(number as string), 
from ...

看起来像

number     c1_
9999999902  9.999999902E9
9999999902  9.999999902E9
9999999902  9.999999902E9
9999999902  9.999999902E9
9999999909  9.999999909E9

有谁能告诉我如何避免将其转化为科学并保留原始文本?

2 个答案:

答案 0 :(得分:9)

Hive支持良好的旧printf()功能,以便您可以显式控制输出格式 - 检查“字符串函数”下的Language Manual UDF

答案 1 :(得分:6)

Hive在转换为字符串时将double转换为科学表示,因为Hive以相同的方式处理double本身。因此,问题不在于转换为字符串。

见下面的例子:

 select 9999999902.0, cast(9999999902.0 as BIGINT), cast(cast(9999999902.0 as BIGINT)  as string) from ..

输出:

OK
9.999999902E9   9999999902