如何将“$”转换、转换或添加到十进制 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()的主要内容,如果未能解决你的问题,请参考以下文章

将 DB2 SQL 十进制转换为 DATE

在LINUX 系统下如何将二进制转换成ASCII码?

如何将sql 中十六进制转换十进制

如何将 SQL 查询转换为 MongoDB

如何将 Excel 公式转换/模拟为 SQL 查询

如何将具有十进制值的数字转换为PL / SQL中的浮点数?