我试图在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
有人能帮我纠正一下我的错误吗。
1条答案
按热度按时间vjrehmav1#
DECIMAL
类型不允许值大于列定义所暗示的范围。十进制(5,0)列支持-99999到99999的范围。
十进制(m,d)列最多允许
M - D
小数点左边的数字。例如
DECIMAL(5,2)
许可证-999.99至999.99后面的零不显示。如果您需要保证显示它们,请使用字符串类型和rpad()函数在末尾添加零或类似的内容。
如果数字不能转换为十进制,则返回null,例如,以下转换返回null:
不清楚你为什么期望
cast a bigint to decimal(18,5)
产生一些分数。cast不划分你的初始数字。