我有一個名爲Product
的表。該表是這樣的:如何將十進制轉換爲科學SQL Server 2008 R2中
ID Product Volume
1 xyz 4654.000000000000000
2 abc 121.000000000000000
我要代表Volume
在科學記數法。 Volume
是數據類型decimal(20,8)
。
我該如何做這種轉換?
我有一個名爲Product
的表。該表是這樣的:如何將十進制轉換爲科學SQL Server 2008 R2中
ID Product Volume
1 xyz 4654.000000000000000
2 abc 121.000000000000000
我要代表Volume
在科學記數法。 Volume
是數據類型decimal(20,8)
。
我該如何做這種轉換?
通常,格式和數據的表現應該由用戶界面來完成,在客戶端上,但如果你堅持......
DECLARE @t decimal(20,8) = 4654.000000000000000;
SELECT @t, CONVERT(nvarchar(32), CAST(@t as float), 2)
結果
4654.00000000 4.654000000000000e+003
首先CAST
decimal
到float
(請注意,它可能會失去精確度),然後CONVERT
float
到nvarchar
使用風格2
:
總是16位數。始終以科學記數法使用。
注意
float
類型只有15位的精度,所以它不能存儲您decimal(20,8)
,且不丟失精度。
declare @t decimal(20,8)=132423423421.00000000
print cast(@t as float)
你可以施放卷欄漂浮在SELECT語句,然後你會得到它的科學記數法,如上圖所示。
我試過了。它只是刪除小數點後的0,並顯示結果。如果我正確地理解了你,你的意思是說我應該使用:選擇cast(float,volume)作爲產品的體積? –
是的,你理解正確,但你可以根據你的要求告訴我應該從4654.0000000000000和121.000000000000000中得出什麼? –
我只希望那些被顯示在科學notataion。作爲一個例子,它應該是這樣的:8.71597853672E + 001 –
我會建議在表現層做這件事。假設你有一個! – Charleh