2008-09-03 85 views
2

我正在寻找使用SQL来格式化一个逗号数千,但没有小数(所以不能使用金钱) - 任何建议吗?SQL编号格式

我使用的是SQL Server 2005中,但随时回答其他人也(如MySQL)

回答

4

使用TSQL你可以投钱并转换它将增加.00,但你可以使用替换或子字符串来删除。

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) 
2

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

0

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

replace(convert (varchar, convert (money, 109999), 1), '.00','') 
2

你想在服务器端完成这个任何特定的原因?看起来这是一个更适合客户/报告的任务。

否则,你是存储号码作为字符串,所以您可以保留原来的格式你想要的 - 但你只是失去了做就可以了,甚至基本的算术能力,而无需将其重新转换为数字。

如果你真的决定在SQL中做这件事,并有合理的理由,我想我的投票是在Scott的方法上:Value - > Money - > Varchar - >修剪小数部分

- Kevin Fairchild