2

我正在寻找使用 SQL 来格式化一个带有千位逗号的数字,但没有小数(所以不能使用 Money) - 有什么建议吗?

我正在使用 SQL Server 2005,但也可以随意回答其他人(如 MySQL)

4

5 回答 5

4

使用 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)
于 2008-09-03T17:59:23.860 回答
2

在 MySQL 中,该FORMAT()函数可以解决问题。

于 2008-09-03T17:53:23.343 回答
2

在 Oracle 中,您可以为 to_char 函数指定格式参数:
TO_CHAR(1234, '9,999') --> 1,234

于 2008-09-03T18:08:24.323 回答
2

您希望在服务器端完成此操作的任何具体原因?似乎这是一项更适合客户/报告的任务。

否则,您将数字存储为字符串,这样您就可以保持所需的格式 - 但您甚至失去了对其进行基本算术运算的能力,而无需将其重新转换为数字。

如果你真的决定用 SQL 来做,并且有正当的理由,我想我的投票是在 Scott 的方法上:价值 --> 金钱 --> Varchar --> 去掉小数部分

——凯文·费尔柴尔德

于 2008-09-03T18:20:53.653 回答
0

对于 SQL Server,您可以将数字格式化为货币,然后删除最右边的三个字符。

replace(convert (varchar, convert (money, 109999), 1), '.00','')
于 2008-09-03T18:09:57.283 回答