关于null的函数
IFNULL(expr1,expr2)
假如expr1不为NULL,则 IFNULL() 的返回值为expr1; 否则其返回值为 expr2;
ISNULL(expr)
如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0;
NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。
计算型函数对null值的处理
COUNT、AVG、MAX、MIN、SUM
会自动忽略null值的行(自动剔除null值得行,就当完全看不见)。比如avg 求平均值如果需要将null计算在内,可以给null的数值为默认为0 ,sql: select avg(ifnull(目标字段,0)) from 表名;
如何对null值字段进行处理
is null 或者 is not null
这个条件是单独处理字段值为null的条件,你不能使用 = NULL 或 != NULL 在列中查找 NULL 值;如果你在sql中使用的是 select * from `order` where user_id != 1 ,这里得到的数据并不会包括 user_id = null 的结果。需要更改为 select * from `order` where user_id != 1 or user_id is nul
总结
表设计之初,能给默认值就给默认值,别默认null了。只会给自己找麻烦。