-1

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

  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 更改为整数或数字时,它什么也不做。

请让我知道如何解决它。

4

2 回答 2

2

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

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

此外,如果您的应用程序需要处理一种以上的货币怎么办?

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

只是我的 2c(或 2p)

于 2013-10-25T07:03:20.883 回答
0

Case Clause 中的两种类型必须相同,因此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
于 2013-10-25T06:57:19.200 回答