在SQL查询中将null替换为零

时间:2019-06-12 13:39:50

标签: mysql sql

我有一个SQL查询,该查询可能返回空值,如果发生这种情况,我希望查询返回“ 0”。这是查询

   SELECT (select count(goal) from fixtures where goal='1' and fixture='$fixture') as goalCountHome
from fixtures where fixture='$fixture'LIMIT 1

任何帮助,不胜感激!

4 个答案:

答案 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'