我一直在玩cast()等等,但似乎无法让事情发挥作用。我有一个长度为18个字符的varchar字符串,我想将其转换或转换为小数,并带有五个小数位。例如,这个字符串:
00000001987600130
将成为19876.00130
在这种情况下,我将始终拥有一个17个字符的字符串,最后五个字符保留为小数位。
我一直在和演员和皈依者一起玩,但我不在那里。例如,这些陈述让我(有点)接近但不完全。
select CAST('00000001987600130' as bigint)/100000.0
select (convert(decimal(17,5),left('00000001987600130',12),0))
如果您有任何建议,我很乐意尝试。谢谢!
答案 0 :(得分:5)
这对我来说很好用:
SELECT CONVERT (decimal, '00000001987600130') / 100000
第一个不起作用的原因是因为CAST的结果是一个整数,并且将整数除以100000个/截断它(不确定是哪个)以使它仍然是一个整数。
答案 1 :(得分:2)
为确保获得所需的内容,请执行最终CAST以确保精确的十进制(17,5)
SELECT CAST((CAST('00000001987600130' AS decimal) / 100000) AS decimal(17,5))
否则,输出类型的比例或精度不正确,可能会在以后产生效果。