在hive中将bigint转换为十进制(18,5)

ttisahbt  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(698)

我试图在hive中将bigint转换为decimal(18,5),但在转换为decimal(18,5)之后,我没有得到任何分数值。
我们取下面的bigint值

99000
999000
499000
350000
344000000

在转换为十进制(18,5)之后,我期望如下所示

0.99000
9.99000
4.99000
3.50000
3440.00000

我正在尝试下面的查询。

select col_a, cast(col_a as decimal(18,5)) from table;

从上面的查询中,我得到的输出与输入相同

99000
999000
499000
350000
344000000

此外,我还尝试将输入除以10^5并转换为十进制(18,5)。

select col_a, cast(col_a/100000 as decimal(18,5)) from table;

上面的查询返回的是分数值,但小数点后没有5位数字。

0.99
9.99
4.99
3.5
344000000

有人能帮我纠正一下我的错误吗。

vjrehmav

vjrehmav1#

DECIMAL 类型不允许值大于列定义所暗示的范围。
十进制(5,0)列支持-99999到99999的范围。
十进制(m,d)列最多允许 M - D 小数点左边的数字。
例如 DECIMAL(5,2) 许可证-999.99至999.99
后面的零不显示。如果您需要保证显示它们,请使用字符串类型和rpad()函数在末尾添加零或类似的内容。
如果数字不能转换为十进制,则返回null,例如,以下转换返回null:

select cast(1234567890L as decimal(3,1))

不清楚你为什么期望 cast a bigint to decimal(18,5) 产生一些分数。cast不划分你的初始数字。

相关问题