【问题标题】:How to convert, cast, or add '$' to a decimal SQL SUM()如何将“$”转换、转换或添加到十进制 SQL SUM()
【发布时间】:2015-12-29 18:39:20
【问题描述】:

在以下查询中将美元符号 ('$') 或货币添加到十进制数据类型的简单方法是什么:

SELECT TOP 100000  
        SUM ([dbo].[Entry].[Amount]) AS 'Total Charges'

感谢您的帮助!

【问题讨论】:

  • 最简单和最好的方法是在数据库之外的任何显示信息的地方进行。
  • 正如迈克尔所说,这最好在表示层完成。但是,如果出于某种原因您绝对需要通过 SQL 执行此操作,那么您应该指定您使用的 SQL 产品(和版本),因为这些操作通常取决于特定供应商的 SQL 实现。
  • @Michael & Tom,感谢 cmets 和指导。我是在应用层做的。

标签: c# sql asp.net sql-server


【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 2015-09-13
      • 2013-10-08
      • 1970-01-01
      相关资源
      最近更新 更多