0

我有一个相当大的存储过程,我正在使用,所以我只包括我关心的片段:

                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' 值会处理它,但事实并非如此。

建议?

4

2 回答 2

1

当 RevenueAmount 是or时显示"0"而不是显示:"0.0"0null

case IsNull(RevenueAmount, 0)
    when 0 then QUOTENAME('0', '"')
    else QUOTENAME(RevenueAmount, '"')
end
于 2012-06-01T00:08:27.707 回答
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] 
于 2012-05-31T23:28:09.583 回答