mysql case when多条件同时满足的多个and组合嵌套的情况,判断空is null --- 系列一 https://blog.csdn.net/qb170217/article/details/81504578

方法一:

SELECT id, time, type,
CASE when (reason is null or reason = '') and type = '驳回' THEN '未填写驳回理由'
ELSE reason
END reason
from workFlow
order by time desc; 

方法二:

SELECT id,time,type,
CASE when type = '驳回' and (reason is null or reason = '') THEN '未填写驳回理由'
ELSE reason
END reason
from workFlow
order by time desc;

方法三:

SELECT id,time,type,
CASE when type = '驳回' and reason is null or reason = '' THEN '未填写驳回理由'
ELSE reason
END reason
from workFlow
order by time desc;

方法四:

SELECT id,time,type,
CASE when (type = '驳回' and reason is null) or reason = '' THEN '未填写驳回理由'
ELSE reason
END reason
from workFlow
order by time desc;

为什么上面方法三, 四和方法二是一样结果? 请大神指点 分享思路...

我的理解:方法三 先找type='驳回'的结果,再与 reason为null,空白串'' 做 ”与“判断,所以与方法二结果一样。

在我预想的是两种结果组合:条件1:type='驳回' and reason is null,  条件2: 单独的 reason='', 而实际结果与我预想的不一样。

个人觉得, 1和2一样结果,3和4是另一个一样的结果,但与实际测试结果不一样。事实上,上面4种方法一样的结果。还得继续努力呀!

方法五:

SELECT id,time,type,
CASE when reason = '' or reason  is null and type = '驳回' THEN '未填写驳回理由'
ELSE reason
END reason
from workFlow
order by time desc;

方法六:

SELECT id,time,type,
CASE when reason is null or reason = '' and type = '驳回'  THEN '未填写驳回理由'
ELSE reason
END reason
from workFlow
order by time desc;

我滴神,我已经晕啦。。。。

方法1,2,3,4,5结果居然一样, 不明白方法3,4,5的结果为啥与方法1,2结果一样。。。。55555, 个人觉得方法1,2结果一样,方法3,4,5,6结果一样.........

方法6符合预想的结果,能理解!

需求

当type=‘驳回’,就把为null 或 为空串 的reason 赋值为‘未填写驳回理由’,对已填写驳回理由,就直接返回reason; 当type为其它类型时,不需要填写理由,所以返回结果保留reason的值,即为空。

方法一二三四五的结果如下:

方法六的结果如下:

mysql case when多条件同时满足的多个and组合嵌套的情况,判断空is null --- 系列二相关推荐

  1. mysql case when多条件同时满足的多个and组合嵌套的情况,判断空is null --- 系列一

    mysql case when多条件同时满足的多个and组合嵌套的情况,判断空is null --- 系列二 https://blog.csdn.net/qb170217/article/detail ...

  2. MySQL使用IF语句以及用case语句对条件或结果进行判断

    MySQL使用IF语句以及用case语句对条件或结果进行判断 一.前期准备 二.IF语句 1.场景一 2.场景二 三.CASE语句 一.前期准备 CREATE TABLE `t1` (`id` int ...

  3. mysql case if 条件查询及性能分析

    概述: sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作. 首先,让我们看一下CASE的语法.在一般的SELECT中, ...

  4. mysql case 2个返回值_MySQL函数简介 2

    6.5 条件判断函数 条件判断函数也被称为控制流程函数,根据满足的条件的不同,执行相应的流程,Mysql中进行条件判断的有IF,IFNULL,和CASE. 6.5.1 IF(expr,v1,v2)函数 ...

  5. mysql case 连接_mysql case when的用法是什么

    mysql case when的用法是:1.用作简单搜索,语法为[CASE [col_name] WHEN [value1]]:2.用作搜索函数,语法为[CASE WHEN [expr] THEN [ ...

  6. MySQL CASE语句

    MySQL CASE语句 如何使用MySQL 中CASE语句在存储的程序中构造复杂的条件语句. 除了IF语句],MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高 ...

  7. 为什么 ElasticSearch 比 MySQL 更适合复杂条件搜索

    熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤. 上述这种处理复杂条件查询的方 ...

  8. 为什么ElasticSearch比MySQL更适合复杂条件搜索

    熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤. 上述这种处理复杂条件查询的方 ...

  9. mysql case when 去重_【Mysql】 case ... when ... 用法

    mysql case when用法 SELECT CASE WHEN `categoryid` =1THEN '参赛队员'ELSE '指导老师'END FROM `blog_article` WHER ...

最新文章

  1. 【转】C语言的位运算的优势
  2. hibernate对象管理
  3. bugzilla dbd-mysql_在Red Hat Linux下安装配置Bugzilla
  4. 网易云易盾与A10 Networks达成战略合作 携手打造抗DDoS攻击的解决方案
  5. linux安装配置nginx
  6. 从电视机的角度来看设计模式之命令模式
  7. matlab repmat 函数的使用
  8. hibernate 基础方法(一)及Hibernate中java对象的三种状态
  9. 黑马vue实战项目-(一)项目初始化登录功能开发
  10. w7系统计算机更改用户名,win7系统用户名不能修改的解决方法
  11. 详解OpenStack常见模块
  12. 第1天——R语言介绍
  13. win10开机自动打开http://go.microsoft.com/fwlink/?LinkID=219472clcid=0x409
  14. windows10自带视频录制器
  15. html ui组件,UI组件
  16. JavaScript-js操作标签style相关
  17. 高大上:光学技术“回归”地球整出“彩虹车站”
  18. 阿里云数加案例-美柚
  19. 初学mysql(十一)之细枝末节-数据类型与运算符
  20. CIL之——初识CIL

热门文章

  1. 若依ajax返回数据,Ajax
  2. 可视计算机应用作业,核心素养背景下可视化教学在中职计算机应用基础中的运用...
  3. 【SAP Hana】使用DBeaver访问Hana数据库
  4. 散列表-开放地址法和链地址法的实现
  5. npm时报错解决EPERM: operation not permitted, lstat
  6. Redis基础数据结构String:你知道String长度限制多少吗
  7. Tomcat优化(AJP 执行器 运行模式 参数优化)
  8. 零售巨头沃尔玛中国市场的跌落,给实体零售业敲响了警钟
  9. 99%游戏开发者都不知道的游戏运营词汇
  10. 矩阵论(3)——子空间