Sql-Server

在一個選擇語句中進行除法、舍入和替換 - 在 SQL Server 中從字節轉換為 GB

  • August 31, 2020

我有一個數據庫,它有一個值、一個以字節為單位的共享大小和一個共享名。這非常準確,但對我的最終使用者沒有用。因此,我將值轉換為 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;

引用自:https://dba.stackexchange.com/questions/274698