SQL处理查询出来的空值问题处理

情景:如果你从数据库中找不到想要的数值,返回了null。但是,你想如果找不到值,就返回0,或者特定的数字,或者字符。则可以使用下列两总方法。

方法一:使用coalesce函数

百度百科
定义: COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。

// 场景一:你想要获取最大值,然后+1返回(即返回的值已经默认为空了),程序接收了本来不该为空的值去运算,就会出错。
SELECT MAX(my_money)+1 FROM tb_test;

// 改进方法:使用 coalesce函数   COALESCE(值1, 值2,......, 值n) ,只要遇到非null值就返回。
// 这样子就可以设置一个值,让你第一个不成功后,返回指定的值,如下面,返回的是1.
SELECT COALESCE(MAX(my_money)+1, 1) FROM tb_test;

方法二:使用case when then else end

参考的简书网址

Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
Case when 相当于一个自定义的数据透视表,group by 是行名,case when 负责列名。

// 场景一:你想要获取最大值,然后+1返回(即返回的值已经默认为空了),程序接收了本来不该为空的值去运算,就会出错。
SELECT MAX(my_money)+1 FROM tb_test;

// 改进方法:使用 case when then函数。
// 这样子就可以设置一个值,让你第一个不成功后,返回指定的值,如下面,返回的是1.
SELECT 
	(CASE 
		WHEN ( MAX(my_money) IS NOT NULL) 
		THEN  MAX(my_money)+1 
		ELSE 1 
		END)
FROM tb_test;

你可能感兴趣的:(SQL)