我有以下查询尝试应用货币格式。
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为整数或数字,它不执行任何操作。
请让我知道如何修复它。
答案 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