mysql为查询结果字段赋默认值

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/LJFPHP/article/details/102413160

一、前言

      我们在查询数据的时候,如果没有对应的数据则返回为null,特别是在left joinright join中经常出现null值,因为我们这里总结一下怎么给null值赋一个默认值。

需求:
      当city_levelnull的时候,赋默认值为1,当不为null的时候,则显示正常的数据。

二、赋值用到的mysql函数

      下面这些函数都是博主根据需求百度的,在搜索资料的同时也学到了很多,以前没仔细看mysql的文档,竟然不知道有这么多好用的函数。。

1、IFNULL() 函数

FNULL(expr1,expr2)  as  city_level  //city_level 是字段名

      按照函数的定义,当city_level的值为null的时候,就赋一个默认值expr2,当city_level的值不为null的时候,则取expr1

实例:

IFNULL(null, 1) AS city_level

      博主在搜索的时候发现大家给出的例子都是这种写法,不过这种写法是不管city_level的值,强行都赋值为1,即expr2的值,明显是不符合咱们的需求。

修改为:

IFNULL(f.city_level, 1) AS city_level

      这样就可以了,当city_level的值不为null的时候,就显示f.city_level的值即可

2、coalesce()函数

实例:

coalesce(f.city_level,1) as city_level

      用法和IFNULL类似,写法也类似。当city_levelnull的时候,取默认值为1。当city_level不为null的时候,显示f.city_level的值。这个函数可以跟多个参数,类似于从左到右依次判断:

coalesce(a,b,c,d);

语意:
      如果a ==null则取b的值。当b的值为null的时候,则取c的值。当c的值为null的时候,则取d的值。当d的值也为null的时候,则返回null

coalesce(NULL,NULL,'111',NULL);   // '111'
coalesce(NULL,NULL,NULL,NULL)  //NULL

3、NULLIF()函数

NULLIF(expr1,expr2)

      这个函数很有意思,类似于:CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

4、isNULL()

      还有isNULL()函数,语意是对比null值,是null则返回1,不是null则返回0

5、NVL()

      这个函数类似于咱们上面的IFNULL()函数,不过这个函数在mysql里面是没有的,只在oracle数据库中适用。

关于NVL()函数: https://www.cnblogs.com/yhoralce/p/6872121.html

6、IF()函数

      博主前几天刚好也用到了IF()函数,和这几个函数挺像的,语意是:

IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false

参考:
mysql根据条件批量插入更新(on duplicate key update)
MySQL 的IFNULL()、ISNULL()和NULLIF()函数

三、总结

      以上就是关于mysql函数的一些介绍,综上所述,推荐写法是coalesce(),这个函数在mysqloracle中是通用的,而且可以设置多个参数,更加灵活一些。

end

猜你喜欢

转载自blog.csdn.net/LJFPHP/article/details/102413160