2015-07-03 52 views
0

我有一些SQL查詢輸出用於磁盤空間不足。它以MB顯示,例如1342 MB轉換SQL中的數字

我想將其轉換爲GB,並且如果可能的話使用十進制格式,例如1.3 GB。有什麼建議麼?

編輯:我正在使用MS SQL 2008.而且我應該在原始文章中給出更多信息。抱歉。這是Lansweeper的報告。以下是當前的報告查詢。

Select Top 1000000 tblAssets.AssetID, 
    tblAssets.AssetUnique, 
    tsysOS.OSname As [OS Name], 
    tblAssets.Description, 
    tblDiskdrives.Caption As [Partition], 
    Cast(Cast(tblDiskdrives.Freespace As bigint)/1024/1024 As numeric) As 
    [Free (in MB)], 
    Cast(Cast(tblDiskdrives.Size As bigint)/1024/1024 As numeric) As 
    [Total Size (in MB)], 
    tblDiskdrives.Lastchanged As [last changed], 
    tsysOS.Image As icon 
From tblAssets 
    Inner Join tblDiskdrives On tblAssets.AssetID = tblDiskdrives.AssetID 
    Inner Join tblOperatingsystem 
    On tblAssets.AssetID = tblOperatingsystem.AssetID 
    Inner Join tblComputersystem On tblAssets.AssetID = tblComputersystem.AssetID 
    Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID 
    Inner Join tsysOS On tblAssets.OScode = tsysOS.OScode 
Where Cast(Cast(tblDiskdrives.Freespace As bigint)/1024/1024 As numeric) < 
    5120 And Cast(Cast(tblDiskdrives.Size As bigint)/1024/1024 As numeric) <> 
    0 And tblComputersystem.Domainrole > 1 And tblDiskdrives.DriveType = 3 And 
    tblAssetCustom.State = 1 
+2

把它除以1024?你可能想要指定你正在使用的數據庫。 – sstan

回答

1
select cast(1342/1024.0 as numeric(10,1)) 

注:

  • 1024.0表達的末尾.0部分是非常重要的。沒有它,你會得到錯誤的結果。
  • 鑄造numeric(10, 1)妥善處理舍入。
+0

謝謝davetek!在我當前的查詢中添加.0完全符合我的需要。這很奇怪,因爲我也嘗試將BigInt更改爲Float,將Numeric更改爲Decimal(5,1)。但是這沒有任何改變。如果我將它作爲Float,那麼爲什麼需要.0會有一個原因嗎? – Grundy

+0

是的,作爲'float'投射也可以。但是你的另一個問題是你最後的選擇是'numeric'(沒有指定任何小數位)。這就是爲什麼你需要將其轉換爲'numeric(n,1)'。 – sstan

+0

好的,這是有道理的。謝謝您的幫助! – Grundy

0
create function dbo.MbToGbString (@mbValue int) returns varchar (10) 
as 
begin 
    return left (round (@mbValue/1024.0, 1), 3) + ' GB' 
end 
go 


select dbo.MbToGbString (1342) 
0

如果你正在使用PostgreSQL:

select pg_size_pretty(megabyteValue * 1024 * 1024); 
+0

OP正在使用SQL Server 2008 –

+0

@SQLPolice謝謝!我發佈了這個答案之前,他懶得提及他使用哪個數據庫 –

+0

哦,是的,對,他後來編輯它, –