2010-02-25 29 views
1

我一直在玩cast()等,并且似乎无法让事情发挥作用。我有一个长度为18个字符的varchar字符串,我想将其转换或转换为小数点后五位小数。因此,举例来说,这个字符串:将此varchar转换为具有相应小数点的小数?

将成为19876.00130

这是我永远有一个17字符串,以保留为小数位的最后五个字符的情况。

我一直在玩转换和转换,但我不是那里。例如,这些陈述让我(有点)接近但不完全。

select CAST('00000001987600130' as bigint)/100000.0 

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

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

回答

2

为了确保你得到你想要做最后的CAST,以确保十进制(17,5)究竟

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

否则,输出类型不是规模或精密正确的,以后可能有特效。

+0

感谢您的答案! – larryq 2010-02-26 16:40:43

5

这对我工作得很好:

SELECT CONVERT (decimal, '00000001987600130')/100000 

之所以第一个没有工作是因为CAST的结果是一个整数,并划分为100000mPa发/截断一个整数(不知道哪个),所以它仍然是一个整数。

相关问题