1:首先要了解为什么库中会存在Null值?

答:举个例子,市面上部分产品的的注册页会要求用户填写邀请码,这样邀请人才会得到奖励,如果用户注册的时候不是被其他人邀请注册的,那么无需填写邀请码,直接注册即可,如果页面没有做特殊处理的话,此时业务库中就生成了null值。

2:不处理Null值会有什么影响?

答:第一:影响加减乘除四则运算(切记不影响聚合函数的运算),第二:导出来数据影响需求方的可读性。

3:如何处理Null值?

staff表的数据如下,其中name(姓名),salary(薪资),bonus(奖金)三个字段存在NULL值。

①:IFNULL函数

  • 查询staff表中所有人的id和name:select id, name from staff ;可以看出name字段有Null值。
  • 用IFNULL函数巧妙的将NULL值转换为指定字段,IFNULL的用法是:IFNULL(expr1,expr2) ,如果expr1为Null,则返回expr2的值,如果expr1非Null,则返回expr1,所以当前问题的解决方案为:select id,IFNULL(name,'无名氏') from staff。这样就替换了name列中的Null值。

②:coalesce函数

  • 查询每个人的薪资情况:select id,salary,bonus from staff,部分员工有salary没有bonus,部分员工有bonus没有salary,部分员工salary和bonus都没有。
  • 如果想查询每个人的总薪资你是不是会想到:select id,salary+bonus as final_salary from staff。那你就错了,因为salary和bonus字段存在Null值,我上述提到过Null值是不参与四则运算的。
  • 这里就需要用到coalesce函数,coalesce用法是:coalesce(expr1,expr2,expr3....),从左向右遍历,返回第一个不是null的表达式,可以看出coalesce函数用法其实与IFNULL函数类似,只是比IFNULL多了一些表达式,再结合IFNULL函数的用法,所以最终方案为:select id,coalesce(salary+bonus,IFNULL(salary,0)+IFNULL(bonus,0),0) as final_salary from staff,这样每个人的总薪资就计算出来啦!
  • 以上是mysql中常用的处理Null值的方法,快快动手做起来吧!

mysql 字段加减_Mysql数据清洗—Null值的处理技巧相关推荐

  1. mysql 字段加减_Mysql常见问题及优化

    一.库表设计 1.1 引擎选择 在 mysql 5.1 中,引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的 mysql 服务器中.使用 mysql 插件式存储引擎体系结构,允许数据库 ...

  2. mysql 字段加减_MySQL数据库开发常见问题及优化(续)

    在设计表或索引时,常出现以下几个问题: 1.少建索引或不建索引.这个问题最突出,建议建表时 DBA 可以一起协助把关. 2.索引滥用.滥用索引将导致写请求变慢,拖慢整体数据库的响应速度(5.5 以下的 ...

  3. mysql 字段加减_MySQL中你必须了解的函数

    在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重.小编刚开始学习的时候也会有这个感觉.不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个.今天小编就把常 ...

  4. mysql两个字段相减_MySQL 中NULL和空值的区别?

    作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别.大兄弟,不行啊,要面试! 前些天我 ...

  5. mysql 时间戳加减_mysql加减时间-函数-时间加减

    mysql加减时间-函数-时间加减 mysql加减时间-函数-时间加减 1. MySQL 为日期增加一个时间间隔:date_add() set @dt = now(); select date_add ...

  6. mysql月份加减_MySQL 日期加减

    1. addtime() 为日期加上指定秒数 select addtime(now(),1); -- 加1秒 2. adddate() 有两种用法,第二个参数直接填数字的话是为日期加上指定天数,填in ...

  7. mysql 两个日期加减_mysql 日期加减

    mysql日期加减 一.MySQL 为日期增加一个时间间隔:date_add(). 1.  示例: set @dt = now(); select date_add(@dt, interval 1 d ...

  8. MySQL中order by中关于NULL值的排序问题

    MySQL中order by 排序遇到NULL值的问题 MySQL数据库,在order by排序的时候,如果存在NULL值,那么NULL是最小的,ASC正序排序的话,NULL值是在最前面的. 如果我们 ...

  9. mysql中时间加1怎么弄,mysql 日期加减

    mysql日期加减 一.MySQL 为日期增加一个时间间隔:date_add(). 1.  示例: set @dt = now(); select date_add(@dt, interval 1 d ...

最新文章

  1. chapter2 机器学习之KNN(k-nearest neighbor algorithm)--K近邻算法从原理到实现
  2. 剑指OFFER之二进制中1的个数(九度OJ1513)
  3. PHP替换回车换行的三种方法
  4. html菜鸟ruby,Ruby 循环
  5. windows稀疏文件
  6. Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
  7. java股票公式源码_各种涨停公式源码
  8. UG NX 12 草图技巧与方法分析
  9. C++:关于类以及h/cpp文件的一些实用知识
  10. rms 文档权限服务器,Rms操作设置office系统文档权限
  11. [usOJ5677]御神渡
  12. python输出偶数_如何用Python 判断奇偶数
  13. 淘宝直通车什么情况能退款?怎么退?
  14. java监听鼠标双击_java鼠标双击事件 java鼠标双击监听
  15. 隐马尔科夫模型(HMM)等文章记录
  16. 巴比特 | 元宇宙每日必读:3个月销售额近3个亿,虚拟偶像的“钱途”真的是一片光明吗?...
  17. 测试用例颗粒度实例列举
  18. EASYOPS 运维平台绿色社区版 V1.2.10
  19. 总线(四)Modbus总线 协议
  20. 一个程序员的跨洋找工作分享

热门文章

  1. WEB架构师成长之路-摘录
  2. VB.NET 按键代码 及组合键
  3. 计算机网络知识学习(核心:网络协议)-- 运输层
  4. 【嵌入式】第一次大作业_记录环境温度并存入数据库
  5. zuc算法代码详解_最短路算法-dijkstra代码与案例详解
  6. tcp 组播_深入了解TCP/IP协议
  7. linux修改参数命令,linux chfn命令参数及用法详解(linux修改用户资料命令)
  8. zookeeper安装_Centos7安装配置Zookeeper
  9. python曲线图数据爬取_python爬取二手房库存,存数数据库,生成折线图(上)
  10. python画spc控制图_SPC控制图的制作方法和步骤