我显示一个表{I} COUNT
特定字段的记录。
有时表可能是空的,而不是显示NULL
值,我希望它变为零。
SELECT count(comment) as total
FROM dbo.omment
WHERE resp = MMColParam2
AND com_stat = 'No' having count(comment)> 0
答案 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)
您可以使用ISNULL或COALESCE:两者相同但差别很小。
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