MySQL是一个具有空值概念的DBMS。在MySQL中,COALESCE函数被使用,因为它从指定的一系列表达式中返回第一个非空值。如果该列的所有值都是空值,那么COALESCE也将返回空值。它的工作原理类似于 "IS NULL查询";两者都是处理空值,但两者的区别在于它们的行为,"IS NULL "查询从表中提取空值,而COALESCE函数则是在表中存在任何空值的情况下给出第一个非空值。
在这篇文章中,我们将解释什么是MySQL中的COALESCE函数,以及如何在例子的帮助下使用它。
什么是MySQL中的COALESCE函数
COALESCE函数有助于从给定的数据中识别第一个非空值,如果在选定的表中有任何空值,它将返回 "null"。在继续理解例子之前,让我们讨论一下COALESCE的一般语法。
一般的语法是。
SELECT COALESCE (value1,value2,.....);
为了理解这个COALESCE函数的语法,我们将举一些整数的例子。
SELECT COALESCE (1,2,3);
由于没有空值,所以它给出了比较值中的第一个值。如果在比较值中有第一个空值,那么COALESCE函数将给出空值之后的第一个值。
SELECT COALESCE (null,2,3);
如果空值出现在第二个位置,那么COALESCE应该返回出现在第一个位置的非零值。
SELECT COALESCE (12,null,3);
如果空值出现在第三个位置,那么COALESCE函数将返回第一个非空值作为结果。
SELECT COALESCE (121,34,null);
现在,让我们来看看表的所有值都是空的情况,运行以下命令
SELECT COALESCE (null,null,null);
从输出结果来看,已经可以看出,如果所有的值都是空的,那么输出结果将是空的。如果我们总结上述例子的结果,我们可以说,如果有一个数字列表,我们应该使用 "空值 "的参考来取出这些值,那么如果第一个位置上有空值,COALESCE函数将返回空值之后的第一个非空值。如果空值出现在第一个位置之外的任何其他位置,那么COALESCE函数将在使用COALESCE函数比较的数字列表中找到第一个非空值,如果所有的值都是空值,那么COALESCE函数将在输出中给出空值。
考虑在数据库中有一个名为 "Student_names "的表,其数据可以被显示。
SELECT * FROM Student_names;
现在我们想用COALESCE函数比较First_name、Middle_name和Last_name的值,并参考一个空值,将结果作为Name返回。
SELECT student_id, COALESCE (first_name, middle_name,last_name) as Name FROM Student_names;
在输出中,我们可以看到,在student_id=2中,空值在Middle_name中,所以它采用了First_name的名字;在student_id=3中,它选择了Middle_name,因为空值在First_name中;在student_id=4中,它选择了First_name,因为空值在Last_name中;在student_id=5中,所有的值都是空的,所以它返回空。如果所有的值都是空的,那么它可以打印你在命令中写的内容,例如,我们想打印,如果所有的值都是空的,那么打印 "No_name_found"。
SELECT student_id, COALESCE (first_name, middle_name,last_name,”no_name_found”) as Name FROM Student_names;
我们可以从输出中看到,当所有的值都为空时,它打印出我们在命令中写的文本,而不是返回空值。
结论
COALESCE和IS NULL查询都是处理空值的。使用COALESCE我们可以比较多个列,而 "IS NULL "查询只适用于一个列。在这篇文章中,我们用简单的例子解释了COALESCE,以了解它的工作原理,然后我们以表为例,了解COALESCE函数是如何在表中工作的。