如果没有找到记录,SQL-Query将返回零计数

时间:2015-03-12 09:14:19

标签: sql sql-server

我显示一个表{I} COUNT特定字段的记录。

有时表可能是空的,而不是显示NULL值,我希望它变为零。

SELECT count(comment) as total
FROM dbo.omment
WHERE resp = MMColParam2 
  AND com_stat = 'No' having count(comment)> 0

6 个答案:

答案 0 :(得分:5)

查看文档,您可以使用ISNULL

  

ISNULL(check_expression,replacement_value)

SELECT ISNULL(COUNT(comment), 0)) AS total
FROM dbo.omment
WHERE resp = MMColParam2 

答案 1 :(得分:3)

您可以使用COALESCE,其中“按顺序计算参数并返回最初未评估为NULL的第一个表达式的当前值”。你传递给它计数(评论)作为第一个参数,作为第二个参数:

   SELECT COALESCE(count(comment), 0) as total
    FROM dbo.omment
    WHERE resp = MMColParam2 

答案 2 :(得分:2)

如果表格为空..... COUNT将始终返回0.它永远不会返回NULL。是什么让你觉得它会?现在原始问题已更改为包含HAVING,现在答案是

删除HAVING

答案 3 :(得分:1)

将其包裹在CASE中

SELECT CASE WHEN COUNT(comment) IS NULL THEN 0 ELSE COUNT(comment) AS total
FROM dbo.omment
WHERE resp = MMColParam2 

答案 4 :(得分:1)

检查NULL值在这里不起作用,因为不返回该行,如果是,则返回0,而不是NULL。

非常简单,删除过滤器,如果过滤掉的唯一内容就是您要求的值:

SELECT count(comment) as total
FROM dbo.omment
WHERE
  resp = MMColParam2 
  AND com_stat = 'No' 

答案 5 :(得分:1)

您可以使用ISNULLCOALESCE:两者相同但差别很小。

  

ISNULL(param1,param2):只能包含2个参数,而且没有   具有它的价值的条件。

     

COALESCE(param1,param2,param3 ....):可以包含多个参数,   并且有条件让它的值为1,而不是空的。

SELECT isnull(count(comment),0) as total
FROM dbo.omment
WHERE resp = MMColParam2 

SELECT COALESCE(count(comment),0) as total
FROM dbo.omment
WHERE resp = MMColParam2