我有一个SQL查询,该查询可能返回空值,如果发生这种情况,我希望查询返回“ 0”。这是查询
SELECT (select count(goal) from fixtures where goal='1' and fixture='$fixture') as goalCountHome
from fixtures where fixture='$fixture'LIMIT 1
任何帮助,不胜感激!
答案 0 :(得分:2)
在MySql中使用IFNULL()函数。对于MsSql,请使用ISNULL()函数。
答案 1 :(得分:2)
如果您使用的是MySql,则IFNULL(<column_name>, 0)
应该可以。
答案 2 :(得分:1)
此查询:
SELECT (select count(goal) from fixtures where goal='1' and fixture='$fixture') as goalCountHome
FROM fixtures
WHERE fixture = '$fixture'
LIMIT 1
无法返回NULL
值。子查询是没有GROUP BY
的聚合查询,因此它总是返回一行。该行将包含COUNT()
的结果。 COUNT()
本身永远不会返回NULL
值。如果没有行,则该值为零。
外部查询可能不会返回没有行,但这与NULL
值不同。
当然,此查询过于复杂,应简单地为:
SELECT COUNT(*) as goalCountHome
FROM fixtures
WHERE fixture = ? AND -- pass this in as a parameter
goal = 1 ; -- it looks like a number so I assume it is
请注意,您应该使用适当的参数传递参数,而不要浪费查询字符串。
答案 3 :(得分:0)
如果需要所有行,而不是目标不为null的行,则可以使用count(*)
select count(*)
from fixtures
where goal=1
and fixture='$fixture'
count(goal)
返回目标不为空的行数
count(*)
返回所选的总行数
否则通常在mysql中不需要空值时,可以使用ifnull(your_column,value)或coalesce(your_column,value)
根据您的评论,您似乎需要总和(目标)
select sum(ifnull(goal,0))
from fixtures
where goal=1
and fixture='$fixture'