这篇文章主要介绍了MySql中 is Null段判断无效和IFNULL()失效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
MySql Null字段判断,和IFNULL失效的处理
ps:(不想看过程就直接把你的sql外边加上 一个select就好了)
select a,b,c from table group by a,b,c //这时候a,b,c 如果判断null不管用
select IFNULL(a,0),IFNULL(b,0),IFNULL(3,0)
from (select a,b,c from table group by a,b,c ) //这样就好啦
不说废话举个栗子,首先看一下这个很简单的表
当我使用SQL语句通过PID进行分组查询,把列转为行的时候结果展示是这样的
不管我怎么IFNULL(SID1,0) 或者 IF( SID1 is null,0,SID1)展示结果依旧是 NULL -.-!很无奈啊。
SELECT
MAX(CASE WHEN SID = 1 THEN IFNULL(PNUM ,0) END) AS SID1,
MAX(CASE WHEN SID = 2 THEN IFNULL(PNUM ,0) END) AS SID2,
MAX(CASE WHEN SID = 3 THEN IFNULL(PNUM ,0) END) AS SID3
SELECT
SUM(PNUM) PNUM,
GROUP BY
) temp
GROUP BY
temp.PID
SELECT
PID,IFNULL(SID1,0) SID1,IFNULL(SID2,0) SID2,IFNULL(SID3,0) SID3
SELECT
MAX(CASE WHEN SID = 1 THEN PNUM END) AS SID1,
MAX(CASE WHEN SID = 2 THEN PNUM END) AS SID2,
MAX(CASE WHEN SID = 3 THEN PNUM END) AS SID3
SELECT
SUM(PNUM) PNUM,
GROUP BY
) temp
GROUP BY
temp.PID
) temp1