我有一个列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
有谁能告诉我如何避免将其转化为科学并保留原始文本?
答案 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