转换为货币格式

时间:2013-10-25 06:44:19

标签: sql sql-server tsql

我有以下查询尝试应用货币格式。

  select case when c.num is null 
              then 0.00 
              else '$' + Convert(varchar,CONVERT(money(c.total+c.customerS),1),2)
         end verified
  from table_Sales c
  where c.id=@id

当我运行它时会出现错误,无法将varchar转换为数字。当我改变 varchar为整数或数字,它不执行任何操作。

请让我知道如何修复它。

2 个答案:

答案 0 :(得分:2)

虽然我很欣赏这不是一个直接的答案,但我强烈建议不要将数字数据格式化为数据层中的字符串。

对我来说,更像是特定于应用程序的逻辑类型。如果您想重新使用相同的查询来处理GBP或Euros,该怎么办?

此外,如果您的应用需要处理多种货币,该怎么办?

我建议在不添加十进制形式的货币符号的情况下返回数据,并在应用程序内或客户端应用格式(如果基于Web)。

只是我的2c(或2p)

答案 1 :(得分:0)

案例条款中的两种类型必须相同,因此0.00必须为'0.00'

查询:

select case when c.num is null 
              then '0.00' 
              else '$' + Convert(varchar,CONVERT(money(c.total+c.customerS),1),2)
         end verified
  from table_Sales c
  where c.id=@id