将此varchar转换为具有适当小数点的小数?

时间:2010-02-25 18:31:18

标签: sql-server-2005 casting decimal varchar

我一直在玩cast()等等,但似乎无法让事情发挥作用。我有一个长度为18个字符的varchar字符串,我想将其转换或转换为小数,并带有五个小数位。例如,这个字符串:

00000001987600130

将成为19876.00130

在这种情况下,我将始终拥有一个17个字符的字符串,最后五个字符保留为小数位。

我一直在和演员和皈依者一起玩,但我不在那里。例如,这些陈述让我(有点)接近但不完全。

select CAST('00000001987600130' as bigint)/100000.0

select (convert(decimal(17,5),left('00000001987600130',12),0))

如果您有任何建议,我很乐意尝试。谢谢!

2 个答案:

答案 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))

否则,输出类型的比例或精度不正确,可能会在以后产生效果。