2015-07-11 85 views
0

我有一個名爲Product的表。該表是這樣的:如何將十進制轉換爲科學SQL Server 2008 R2中

ID Product   Volume 
1  xyz  4654.000000000000000 
2  abc  121.000000000000000 

我要代表Volume在科學記數法。 Volume是數據類型decimal(20,8)

我該如何做這種轉換?

+0

我會建議在表現層做這件事。假設你有一個! – Charleh

回答

1

通常,格式和數據的表現應該由用戶界面來完成,在客戶端上,但如果你堅持......

DECLARE @t decimal(20,8) = 4654.000000000000000; 
SELECT @t, CONVERT(nvarchar(32), CAST(@t as float), 2) 

結果

4654.00000000 4.654000000000000e+003 

首先CASTdecimalfloat(請注意,它可能會失去精確度),然後CONVERTfloatnvarchar使用風格2

總是16位數。始終以科學記數法使用。

注意

float類型只有15位的精度,所以它不能存儲您decimal(20,8),且不丟失精度。

0
declare @t decimal(20,8)=132423423421.00000000 
print cast(@t as float) 

你可以施放卷欄漂浮在SELECT語句,然後你會得到它的科學記數法,如上圖所示。

+0

我試過了。它只是刪除小數點後的0,並顯示結果。如果我正確地理解了你,你的意思是說我應該使用:選擇cast(float,volume)作爲產品的體積? –

+0

是的,你理解正確,但你可以根據你的要求告訴我應該從4654.0000000000000和121.000000000000000中得出什麼? –

+0

我只希望那些被顯示在科學notataion。作爲一個例子,它應該是這樣的:8.71597853672E + 001 –

相關問題