将numeric转换为没有小数位的字符串

时间:2012-05-31 23:17:54

标签: sql sql-server sql-server-2008

我有一个相当大的存储过程,我正在使用,因此我只会包含我所关注的代码段:

                QUOTENAME(isnull(NumberCount,'0'), '"'),
                QUOTENAME( isnull(QualifiedCount,'0'), '"'),
                QUOTENAME((isnull(RevenueAmount,'0')), '"'),
                QUOTENAME(isnull(CurrencyAmount,'0'), '"')      

在输出中,除RevenueAmount列外,所有具有NULL值的记录都显示为期望值“0”。显示为“0.0”。这是因为它被声明为NUMERIC(20,2)。如何让它显示值'0'?我认为在isnull条件中设置一个显式值'0'会照顾它,但事实并非如此。

么?

2 个答案:

答案 0 :(得分:1)

当RevenueAmount为"0""0.0"时,要显示0而不是null

case IsNull(RevenueAmount, 0)
    when 0 then QUOTENAME('0', '"')
    else QUOTENAME(RevenueAmount, '"')
end

答案 1 :(得分:0)

您可以为RevenueAmount列执行此操作。诀窍是测试null或0并转换为正确的字符串格式

case RevenueAmount
    when null then QUOTENAME('0.0', '"')
    when 0 then QUOTENAME('0.0', '"')
else cast(QUOTENAME(isnull(RevenueAmount,'0'), '"') as varchar(20)) 
end
as [RevenueAmount]