mysql 使用case when判断字段 is null 或 is not null 失效 无效的问题

Java资深小白,不足之处,或者有任何错误欢迎指出。	--蓝紫

mysql 使用case when判断字段 is null 或 is not null 失效 无效的问题

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