2013-10-25 55 views
-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 [email protected] 

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

请让我知道如何解决它。

+1

另外,改变'..Convert(VARCHAR,..'喜欢的东西'..Convert(VARCHAR(100),...' –

+0

什么是'ts.id '。在你的查询中没有'ts'表 –

+0

为什么不把它存储在Decimal(10,2)数据类型中?是否有钱? –

回答

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 [email protected] 
2

虽然我明白这不是一个直接的答案,我会强烈主张在格式化数字数据数据层中的字符串。

对我来说感觉更像是逻辑类型,它可能或可能是应用程序特定的。如果您想重复使用相同的查询来处理英镑或欧元,该怎么办?

此外,如果您的应用程序需要处理多种货币?

我会建议返回的数据,而不添加十进制形式的货币符号,并在应用程序或客户端应用格式,如果基于Web也许。

只是我2C(或2P)