2012-12-13 78 views
14

我有一個名爲TotalArea的列,其格式爲numeric (12,2)SQL Server 2008千列分隔符

我希望它用千分顯示的數字,所以當我

select TotalArea from table 

給我看像1,234.00的格式。

我該怎麼做?謝謝!

+0

可能的重複[如何在T-SQL中用逗號格式化數字?](https://stackoverflow.com/questions/4377352/how-doi-i- format-a-number-with-commas-in-t-sql) –

回答

26

試試這個方法:

select replace(convert(varchar,convert(Money, TotalArea),1),'.00','') 
from table 

SELECT CAST(CONVERT(varchar, CAST(123456 AS Money), 1) AS varchar) 
from table 
+1

+1 beca使用它是正確的,但請不要這樣做。 @MattWhitfield有絕對的釘子。 – tomfanning

+1

只有在您的號碼投入金錢類型時才能執行此操作。 @dasiimwe有更好的答案。浮點值將錯誤 – Dave

+0

浮點值轉換正常,如果你堅持使用SQL Server 2008,那麼這可能是最好的選擇。 'declare @f float = 12345.67890; SELECT CONVERT(varchar,CAST(@f AS Money),1)' – Rob

18

顯示格式的數字是什麼,應該在顯示層來完成,而不是在數據庫中。所以,在任何應用程序中,這些數據最終都會被使用,您應該在那裏格式化它。不幸的是,管理工作室在這方面沒有提供太多的控制。

+0

如果你想要標準化的XML數據格式化呢?我管理數據庫中的格式標準,並傳播到所有的客戶端,無論是網絡,手機等。而BTW,格式(數字,'#,0')給你分隔符,不知道爲什麼有人會使用替換(轉換(兌換()))????在我看來,在做1M +記錄時效率不高...... –

+0

@ArvinAmir - 我認爲XML的格式化只對人類有用 - 計算機不管它是否有一堆空白,都會使用它。所以我會說這種格式化仍然應該在顯示的時候完成。 –

-1

試試這個一個很棒的例子。

SELECT CAST(CONVERT(VARCHAR,CAST(123456金錢),1)爲varchar)

+1

與Parado的答案几乎相同,近一年後 - ***重複答案*** – Kiquenet

14
SELECT FORMAT(12345,'#,0.00'); 

SELECT FORMAT(TotalArea,'#,0.00') from table; 

參考: https://msdn.microsoft.com/en-us/library/ee634206(v=sql.105).aspx

+0

這是最好的答案,因爲這可行 - SELECT FORMAT(2222222222222222222222222,'#,0.00') – Dave

+0

僅支持從SQL Server 2012開始。 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b4090663-6805-46f5-b84f-81e5eb90da30/format-works-in-2012-but-not-in-2008-what-am-我失蹤?論壇= transactsql –

+0

謝謝,非常有幫助 –

0

使用這個簡單的.... 格式(CHART_OF_ITEM。 UNIT_PRIC_W_TAX,'#,0.00')AS UNIT_PRICE_W_TAX