我希望使用SQL格式化数字中的逗号,但没有小数(所以不能使用Money) - 任何建议?
我正在使用SQL Server 2005,但也可以随意回答其他人(如MySQL)
答案 0 :(得分:4)
使用TSQL你可以转换成金钱并转换它将添加.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)
答案 1 :(得分:2)
在MySQL中,FORMAT()
函数可以解决问题。
答案 2 :(得分:2)
在Oracle中,您可以为to_char函数指定格式参数:
TO_CHAR(1234,'9,999') - > 1234
答案 3 :(得分:2)
您希望在服务器端完成此任何特定原因吗?似乎这是一个更适合客户/报告的任务。
否则,你将数字存储为字符串只是为了保持格式化你想要的格式 - 但你只是失去了对其进行基本算术的能力而无需重新转换它是一个数字。
如果你真的决定在SQL中做这件事并且有合理的理由,我想我的投票是斯科特的方法:价值 - >钱 - > Varchar - >修剪小数部分
- Kevin Fairchild
答案 4 :(得分:0)
对于SQL Server,您可以将数字格式化为金钱,然后删除最右边的三个字符。
replace(convert (varchar, convert (money, 109999), 1), '.00','')