1

我一直在玩 cast()s 之类的东西,但似乎无法让事情正常进行。我有一个长度为 18 个字符的 varchar 字符串,我想将其转换或转换为小数点,小数点后五位。例如,这个字符串:

00000001987600130

将变为 19876.00130

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

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

select CAST('00000001987600130' as bigint)/100000.0

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

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

4

2 回答 2

5

这对我来说很好:

SELECT CONVERT (decimal, '00000001987600130') / 100000

第一个不起作用的原因是因为 CAST 的结果是一个整数,并且将一个整数除以 100000 轮/截断它(不确定哪个),使其仍然是一个整数。

于 2010-02-25T18:37:00.330 回答
2

为了确保你得到你想要的东西,做一个最终的 CAST 以确保小数(17,5)准确

SELECT CAST((CAST('00000001987600130' AS decimal) / 100000) AS decimal(17,5))

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

于 2010-02-25T19:42:35.110 回答