sql查询时case when XXX is not null then XXX else 0 end 和 ifnull(XXX,0)的区别在哪?

XXX是查询语句。在写代码的时候遇到这个问题,看到是写的case when 这种方式,不知道为什么,是效率或者什么方面有影响吗?

case when 两种情况返回结果都可以是任何其他值,ifnull只能返回本身和null时的替代值。