2010-02-25 50 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發/截斷一個整數(不知道哪個),所以它仍然是一個整數。

相關問題