如何将“$”转换、转换或添加到十进制 SQL SUM()
Posted
技术标签:
【中文标题】如何将“$”转换、转换或添加到十进制 SQL SUM()【英文标题】:How to convert, cast, or add '$' to a decimal SQL SUM() 【发布时间】:2015-12-29 18:39:20 【问题描述】:在以下查询中将美元符号 ('$') 或货币添加到十进制数据类型的简单方法是什么:
SELECT TOP 100000
SUM ([dbo].[Entry].[Amount]) AS 'Total Charges'
感谢您的帮助!
【问题讨论】:
最简单和最好的方法是在数据库之外的任何显示信息的地方进行。 正如迈克尔所说,这最好在表示层完成。但是,如果出于某种原因您绝对需要通过 SQL 执行此操作,那么您应该指定您使用的 SQL 产品(和版本),因为这些操作通常取决于特定供应商的 SQL 实现。 @Michael & Tom,感谢 cmets 和指导。我是在应用层做的。 【参考方案1】:这只是提出问题,应该在应用层完成。
但是SQL Server
可以使用FORMAT
函数做到这一点:
SELECT FORMAT(SUM ([Amount]), 'c', 'en-US') AS 'Total Charges'
FROM Entry
LiveDemo
输出:
╔═════════════════╗
║ Total Charges ║
╠═════════════════╣
║ $21.00 ║
╚═════════════════╝
【讨论】:
感谢工作正常。我无法在应用层执行此操作,因为它显示在 Gridview 中,我不确定是否也可以在应用层执行此操作。 @Jacman 绝对可以,你只需要指定每列的格式,而不是盲目地显示来自 SQL 层的结果。 @Stanley 谢谢!我是在 DataFormatString 下使用 0:C 格式完成的。我想这种方式省去了在sql级别执行的麻烦。【参考方案2】:这是一个使用 Sql Server 2012 的示例
Declare @Currency float = 1500.00
Select Format(@Currency, 'C', 'en-US')
https://msdn.microsoft.com/pt-br/library/hh213505(v=sql.110).aspx
【讨论】:
【参考方案3】:如果您不介意输出数据类型,则可以将结果转换为 varchar 并附加“$”。
SELECT TOP 100000
'$ ' + convert(varchar(10), SUM ([dbo].[Entry].[Amount])) AS 'Total Charges'
【讨论】:
以上是关于如何将“$”转换、转换或添加到十进制 SQL SUM()的主要内容,如果未能解决你的问题,请参考以下文章