我正在寻找使用 SQL 来格式化一个带有千位逗号的数字,但没有小数(所以不能使用 Money) - 有什么建议吗?
我正在使用 SQL Server 2005,但也可以随意回答其他人(如 MySQL)
我正在寻找使用 SQL 来格式化一个带有千位逗号的数字,但没有小数(所以不能使用 Money) - 有什么建议吗?
我正在使用 SQL Server 2005,但也可以随意回答其他人(如 MySQL)
使用 TSQL,您可以转换为 money 并转换它会添加 .00,但您可以使用 replace 或 substring 来删除。
replace(convert(varchar, cast(column as money), 1), '.00', '')
在 SQL 2005 中,您也可以使用 CLR 函数
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString FormatNumber(SqlInt32 number)
{
return number.Value.ToString("N0");
}
并将其作为任何其他用户定义的函数调用
SELECT dbo.FormatNumber(value)
在 MySQL 中,该FORMAT()
函数可以解决问题。
在 Oracle 中,您可以为 to_char 函数指定格式参数:
TO_CHAR(1234, '9,999') --> 1,234
您希望在服务器端完成此操作的任何具体原因?似乎这是一项更适合客户/报告的任务。
否则,您将数字存储为字符串,这样您就可以保持所需的格式 - 但您甚至失去了对其进行基本算术运算的能力,而无需将其重新转换为数字。
如果你真的决定用 SQL 来做,并且有正当的理由,我想我的投票是在 Scott 的方法上:价值 --> 金钱 --> Varchar --> 去掉小数部分
——凯文·费尔柴尔德
对于 SQL Server,您可以将数字格式化为货币,然后删除最右边的三个字符。
replace(convert (varchar, convert (money, 109999), 1), '.00','')