我试图在蜂巢中将bigint转换为十进制(18,5),转换为十进制(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
有人可以纠正我在这里遗失或做错的事情吗?
答案 0 :(得分:0)
DECIMAL
类型不允许大于列定义所隐含范围的值。
DECIMAL(5,0)列支持-99999至99999。
DECIMAL(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)
产生一些小数。强制转换不会除您的初始数字。