一、查询值不为NULL 的列

我们先来看数据库所有数据

执行的sql语句:  select id,FCJ,comeCoalForecast from FCJ

查询结果如下:

看完执行查询所有数据的例子接下来我们查询   comeCoalForecast 这个列不为NULL的数据; sql语句的编写为 select id,FCJ,comeCoalForecast from FCJ where comeCoalForecast is not NULL ; SQL语句执行结果如下:

对比上面查询所有语句,  comeCoalForecast  这一列不为NULL , 确实只有 id为7126这一条数据; 很显然上面的sql语句一点都没毛病, 完全正确!

需要强调的是 --> 注意msql数据库中, sql语句判断不为NULL 正确语法是 字段名 is not NULL , 而不是 字段名!=NULL; 就上面而言很多入门的小白很想当然的就会写成 comeCoalForecast !=NULL;

既然写到这了, 那么我们顺便看下 select id,FCJ,comeCoalForecast from FCJ where comeCoalForecast !=NULL 执行结果

很明显查询出来的数据并不是我们想要的正确数据,  mysql 数据库判断字段不为NULL 正确语法为:   字段名 is not NULL, 而不是 字段名!=NULL 记住就好!

二、查询值为NULL 的列

知道了上面这点. 直接上sql语句  select id,FCJ,comeCoalForecast from FCJ where comeCoalForecast is NULL; 直接结果如下:

对比上面查询所有, 很容易看出来是我们想要的正确数据!

三、既要返回值不为NULL的列也要返回值为NULL的列

很自然大家第一反应想到的是这还不简单, 直接 select * from 表名 不就好了; 且慢; 大家接着往下看, 这是小编在实际开发中遇到的真实的例子

小编也和大家一样, 也是查询出前端需要显示的列然后返回数据给前端, 关键代码如下:

执行的sql 语句:

select id,DATE_FORMAT(date,'%Y-%m-%d %H:%i:%s') as date,cl_aws_trainno,FCJ, cl_aws_coalname,cl_aws_minename,cl_aws_jweight,MJ,density,comeCoalForecast ,DATE_FORMAT(haveTime,'%Y-%m-%d %H:%i:%s') as haveTime,classGroup ,heavyCarAmount ,allProcessHeatValue   from FCJ 

(补充说明一些内容: 上面sql语句中 DATE_FORMAT(date,'%Y-%m-%d %H:%i:%s') as date 是格式化数据库中date这个日期 datetime时间类型的列 为标准的 时间格式;  格式: 2021-03-01 00:00:00(举例示例)

Java代码中对应数据库 date 日期类型为 datetime 实体类中的 date属性的值定位的为String 字符串类型)

上面sql语句查询结果如下:

上面小编使用的是Navicat 连接数据库, 在上面显示的结果中 comeCoalForecast 不管值为NULL还是值为NULL的数据都显示出来了对应的列; 小编以为这样就符合要求了, 但是当我把查询返回的结果返回给前端通过Postman 调用却有了不一样的发现:

此处我返回数据给前端, 那么数据库列的值为NULL, 但是最起码也得要把列名给前端传过去, 很明显上面通过postman得出的结果不行, 也就是说通过 select *from table 这种方式查询, mysql数据库中值为NULL的列的列名不会显示出来,  最终小编通过查询资料文档, 找到一个     IFNULL(expr1,expr2) 这个内置函数, 参数expr1为判断数据库中某个列的值是否为NULL , expr2参数的作用是给这个值为NULL的列赋值, 如果expr1这个数据库列的值为NULL, 那么我可以把查询出来expr1这一列的值赋值为aa(任意值都可以, 自定义的), 如果expr1这一列的值不为NULL, 则按expr1原值显示, 原来是什么值就显示什么值;  请看具体操作实例:

执行sql语句:  select id,FCJ,IFNULL(comeCoalForecast,"aa") from FCJ ; 结果如下:

大家可以看到查询出来的comeCoalForecast这一列的列名上面显示成了IFNULL(comeCoalForecast,"aa") 很明显看起来别捏, 接下来直接用mysql语句里面的as 自定义列名就好啦, 具体看代码:

select id,FCJ,IFNULL(comeCoalForecast,"aa")  as comeCoalForecast from FCJ; 执行结果如下:

效果很好,  达到了我们想要的效果, as 列名别称, 后面的名字也可以任意定制, 请看具体操作:

select id,FCJ,IFNULL(comeCoalForecast,"aa")  as AAA  from FCJ; 执行结果如下:

立马见效, 小编玩得不亦乐乎, 哈哈, 废话不多说, 小编写得这么详细, 想必大家很容易看明白看懂, 上面讲了这么多就为了把数据库 值为NULL的列和值不为NULL的列都给显示出来. 如果值不为NULL自然按原值查询显示, 但是如果某些列的值为NULL, 最起码列名你得给我显示出来吧, 上面抛砖引玉那么多, 小编直接上代码:  因为我和前端协商沟通好了, 如果数据库某个列值为NULL, 我就直接赋值为"" 空字符串, 他那边接收到某个列的值为"", 自然也就知道数据库中该列是没有值的为NULL值

select id,DATE_FORMAT(date,'%Y-%m-%d %H:%i:%s') as date,cl_aws_trainno,FCJ, cl_aws_coalname,cl_aws_minename,cl_aws_jweight,MJ,density, ifnull(comeCoalForecast,"") as comeCoalForecast,ifnull(DATE_FORMAT(haveTime,'%Y-%m-%d %H:%i:%s') ,"") as haveTime,ifnull(classGroup,"") as classGroup , ifnull(heavyCarAmount,"") as heavyCarAmount ,IFNULL(allProcessHeatValue,"") as allProcessHeatValue  from FCJ//数据库某个列的值可能为NULL,加上函数判断即可

请看结果 :

因为和前端工程师已经协商好了, 数据库列的值不为NULL自然按原值显示, 如果数据库某些列的值为NULL 虽然是查询出来没有值, 但是返回前端最起码你得给我把对应的列名显示出来吧, 上面这种解决方式实现了这个需求, 这是小编在实际开发工作中遇到的真实存在的问题, 特此记录, 原创不易, 如果觉得小编写得还不错的话, 欢迎一键三连, 点关注, 感谢感谢!

我们下期不见不散

实际开发问题解决记录: 需求是mysql执行查询 返回数据给前端 既要返回值不为NULL的列也要返回值为NULL的列(值为NULL的列列名返回给前端)相关推荐

  1. 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  2. 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案 1

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:王帅 来源地址:https://yq.aliyun.com/ ...

  3. 【转载文章】记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案...

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  4. mysql开发问题解决_开发过程中mysql常见问题的解决方法

    本篇文章给大家带来的内容是关于开发过程中mysql常见问题的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录开发过程中遇到mysql相关的问题以及解决方法,长期更新. 远 ...

  5. 移动开发学习记录点滴-动态增加列表行数据

    2019独角兽企业重金招聘Python工程师标准>>> 一. 使用jQueryMobile的第一步,先创建一个html页面,并在head标签中加入以下内容: <link rel ...

  6. 使用charles修改服务器返回数据,charles_01_打断点修改接口请求返回数据

    前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...

  7. C#串口通信—向串口发送数据,同步接收返回数据

    最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...

  8. 个人前端工程师开发工具记录

    原文地址:https://www.zybuluo.com/yyman001/note/58799 个人前端工程师开发工具记录 我们前端,每个人都有自己的开发工作环境,工具等,所以我写了这一篇文章,为自 ...

  9. 31:第三章:开发通行证服务:14:开发【获得用户基本信息,接口】;(需要根据前端对返回数据的要求,创建一个只包含非隐私信息的AppUserVO类,去包装返回给前端的数据)

    说明: (1)本篇博客内容:开发[获得用户基本信息,接口]: 目录 零:本篇博客合理性说明:(或者说是:[获得用户基本信息,接口]是什么) 一:正式开发: 1.在[api]接口工程的UserContr ...

最新文章

  1. filecoin的思考
  2. Linux - 系统资源
  3. C#如何安全、高效地玩转任何种类的内存之Span的秉性特点(二)
  4. 鹅厂后台开发工程师的工作日常
  5. JDBC笔记01-JDBC,Connection,Statement,ResultSet,PreparedStatement,Properties
  6. python和java学哪个好-Python和Java学哪个好就业?
  7. 世界地图可以无限放大_做外贸有哪些软件可以推荐?
  8. ubuntu下分区工具
  9. matlab 去除水印,初試 Matlab 之去除水印
  10. 经典Bug永流传---每周一“虫”(二十一)
  11. python 公众号 关注者位置_微信公众号获取用户地理位置
  12. 你不是迷茫,你只是浮躁
  13. 计算机固态硬盘256g,用固态硬盘的亲们 你们256g够用么?做什么用途?要买电脑 不得不考虑这个...
  14. 四轴飞行器资料分享,几个G ,66个文件,如果链接失效请私聊我
  15. Excel的透视表:概念、用途、应用
  16. 【STM32F429】第17章 ThreadX GUIX之点阵字体和字符编码(重要)
  17. IntelliJ IDEA安装使用教程 亲测2019.2.4版本可行
  18. 二维码打印-非EXCEL控件和非SmartForm方式
  19. notepad++ 下载地址(非官网,无捆绑插件,自己记录一下)
  20. UAV-PPK数据处理软件使用

热门文章

  1. 阿里的“传奇程序员”
  2. T(n) = 25T(n/5)+n^2的时间复杂度(转)
  3. 基于奇特物联MQTT协议设备接入示例
  4. debian usb android,Debian下挂载usb设备
  5. 6.Spring security中的rememberMe
  6. 使用java怎么实现商品三级分类_如何实现列表三级分类---后端+前端
  7. 利用Zookeeper实现 - 分布式锁
  8. SQLzoo练习题回顾
  9. 4.Python复杂数据类型之字典
  10. 项目管理第二招:对齐目标,大事化小