【发布时间】:2012-12-13 10:01:24
【问题描述】:
我有一个名为TotalArea 的列,其格式为numeric (12,2)。
我希望它显示带有千位分隔符的数字,所以当我
select TotalArea from table
向我展示1,234.00 之类的格式。
我怎么能这样做?谢谢!
【问题讨论】:
标签: sql sql-server database sql-server-2008 tsql
我有一个名为TotalArea 的列,其格式为numeric (12,2)。
我希望它显示带有千位分隔符的数字,所以当我
select TotalArea from table
向我展示1,234.00 之类的格式。
我怎么能这样做?谢谢!
【问题讨论】:
标签: sql sql-server database sql-server-2008 tsql
试试这个方法:
SELECT REPLACE(CONVERT(VARCHAR, CONVERT(MONEY, TotalArea), 1), '.00', '')
FROM table
或
SELECT CAST(CONVERT(VARCHAR, CAST(123456 AS MONEY), 1) AS VARCHAR)
FROM table
【讨论】:
declare @f float = 12345.67890; SELECT CONVERT(varchar, CAST(@f AS Money), 1)
SELECT FORMAT(12345,'#,0.00');
SELECT FORMAT(TotalArea,'#,0.00') from table;
参考: https://msdn.microsoft.com/en-us/library/ee634206(v=sql.105).aspx
【讨论】:
显示数字的格式应该在显示层中完成,而不是在数据库中。因此,无论最终在何种应用程序中使用此数据,都应在此处对其进行格式化。遗憾的是,Management Studio 在这方面没有提供太多控制。
【讨论】:
我知道问题是针对 sql server 2008 但如果您有 sql server 2012+,则可以使用如下格式:
SELECT FORMAT(12345.5634, 2);
【讨论】:
Msg 8116, Level 16, State 1, Line 131 Argument data type int is invalid for argument 2 of format function. 大概你在回答一个不同的问题 :) 这个是关于 SQL Server 的。