Sql-Server
在一個選擇語句中進行除法、舍入和替換 - 在 SQL Server 中從字節轉換為 GB
我有一個數據庫,它有一個值、一個以字節為單位的共享大小和一個共享名。這非常準確,但對我的最終使用者沒有用。因此,我將值轉換為 GB。使用簡單的除法效果很好。
假設我的數據庫由兩列組成。共享名和共享大小。
Sharename | Sharesize
Share 1 |71685107549 Now I run this: SELECT TOP (1000) [Sharename] ,[ShareSize] ,(ShareSize / 1e+9) SharesizeGB FROM [mydb].[dbo].[myshares]
輸出是:
ShareSize SharesizeGB 71685107549 71,685107549
現在我需要用“點”替換“,”並將結果四捨五入到點後只有兩位數。
僅使用 select 語句是否可行?
對於我的範例,它不需要除以 1024。
查詢返回一個浮點數據類型,它是一個沒有逗號或點十進制分隔符的二進制結構。渲染應用程序將值轉換為字元串格式以供顯示,如果經過程式,它可以遵循客戶端的區域設置。
儘管您可以更改 T-SQL 以返回如下例所示的格式化字元串,但請注意客戶端排序將使用字元串而不是數字規則。請注意,此範例明確指定了文化
en_US
,它使用點小數分隔符來覆蓋目前會話語言設置。還添加了該子句ORDER BY
的確定性結果。TOP
SELECT TOP (1000) [Sharename] ,[ShareSize] ,FORMAT(ShareSize / 1e+9, '#,##0.000000000000', 'en-US') SharesizeGB FROM [mydb].[dbo].[myshares] ORDER BY (ShareSize / 1e+9) DESC;