Roy*_*mir 1 sql-server sql-server-2008
我有一个像: 12345.678
我希望它像:( 12,345删除剩下的!)
添加数千个分离器的一个解决方案是:
select convert(varchar(100), cast(12345.678 as money), 1)
Run Code Online (Sandbox Code Playgroud)
产量: 12,345.68
现在我应该删除 .68
我用parseName偶然发现了一个漂亮的解决方案 :
select parsename(convert(varchar(100), cast(12345.678 as money), 1),2)
Run Code Online (Sandbox Code Playgroud)
产量: 12,345
问题:这个问题有更好的解决方案吗?(也许不涉及其他函数/字符串操作?)
在SQL Server 2008中没有简单的方法.SQL Server 2012引入了FORMAT功能,使您可以执行以下操作:
SELECT FORMAT(12345.67, '#,###')
Run Code Online (Sandbox Code Playgroud)
(虽然这会将数字四舍五入到12,346)
格式化结果通常不在数据库的范围内 - 它应该留给您的前端程序/网站/报告/电子表格等.但是,如果您确实需要在SQL Server中执行此操作,我怀疑你的解决方案尽可能接近,除非你使用CLR Integration来链接到.NET的String.Format函数.
如果您使用parseName确实使用了您的解决方案,请注意它可能无法在国际上运行(例如,在欧洲部分地区,用作小数分隔符).这对您来说可能不是问题,但如果是,那么您将需要一个允许您明确控制格式的解决方案.
| 归档时间: |
|
| 查看次数: |
16014 次 |
| 最近记录: |