为什么当我使用count结果是空字符串?

时间:2017-07-29 12:01:53

标签: sql sql-server

我的示例代码是这样的:

select count(*) cnt
from
(
    select title,person,first_value,second_value,third_value
    from
    (
        select a.title,b.person,b.id_meta b_meta,b.value
        from tbl_one a
        inner join tbl_param b on a.param=b.id
        where b.id in ('first_value','second_value','third_value')
    ) x
    pivot
    (
        sum(value)
        for param in ([first_value],[second_value],[third_value])
    ) pvt
) r
inner join tbl_two c on r.person=c.person
inner join tbl_person p on r.person=p.id
group by p.title,r.first_value,r.second_value,r.third_value

这段代码没有计数,我从这段代码中取了一个空字符串,当我计算这个查询时我想得到0但是它只显示一个空字符串。为什么它给我空而不是0?

1 个答案:

答案 0 :(得分:2)

COUNT()永远不会返回NULL,也不会返回字符串值。所以,你的问题有点可疑。

我认为问题略有不同 - 您的查询根本不返回任何行。然后,当你去查看COUNT()时,它将被返回为NULL(特别是如果你将它用作标量子查询),因为该行不存在。

如果您有GROUP BY子句,就会发生这种情况。如果过滤掉所有行,则不返回任何行。

我建议你删除GROUP BY子句并计算返回的行数。我怀疑其值为0