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

一、前言

      我们在查询数据的时候,如果没有对应的数据则返回为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

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值