mysql 使用case when判断字段 is null 或 is not null 失效 无效的问题
•
数据库
Java资深小白,不足之处,或者有任何错误欢迎指出。 --蓝紫

SQL查询目的是想在数据库中字段数据不存在时,返回一个默认值,但是使用case when is null 执行失效了。同样地,使用IFNULL函数也存在这个问题。
原因
原因是查询表中的数据无记录时,显示的是 N/A(Not Available OR Not Applicable直译是无从得知或不适用),这种无记录情况无法判断为 NULL或 NOT NULL,所以失效。而NULL是指某个字段没有值或值为null,前提是查询的记录是存在的。
解决方案
方式一:聚合函数
使用聚合函数来处理,聚合函数处理字符串,会有默认的返回值,若为空SUM()、AVG()、MAX()、MIN()函数默认会返回null值,COUNT()函数默认返回0。

按照这个结论去调整我们的sql ,结果就是期望值了。

方式二:select语句
可以使用select语句对空值进行再一次查询处理,因为第二次的select查询会将null作为一个列。
case when 的condition判断字段是否空,替换成IFNULL函数也得到了期望值,示例如下。

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/3e528a7169.html
