case 有两种格式,简单case函数和case搜索函数

一.简单case函数和搜索函数

简单case函数
case sexwhen '1' then '男'when '2' then '女’else '其他' end
搜索函数
case when sex = '1' then '男'when sex = '2' then '女'else '其他' end

二.不同:这两种方式可以实现相同的功能,但是有的时候,函数在功能方面没有搜索函数好;

case函数只返回第一个符合条件的值,剩下的case部分会被自动忽略。

这段sql,你永远无法得到“第二类”这个结果
case when col_1 in ('a','b') then '第一类'when col_1 in ('a') then '第二类'else '其他' end  

三.实例:

有如下一张表:

                                     ID NAME                        SEX
--------------------------------------- -------------------- ----------1 张一                 2 张二                          13 张三                 4 张四                 5 张五                          26 张六                          17 张七                          28 张八                          1

1.上表结果中的sex是用代码表示的,希望将代码用中文表示,可在语句中使用case语句:

select u.id,u.name,u.sex,(case u.sexwhen 1 then '男'when 2 then '女'else '空的'end)性别from users u;ID NAME                        SEX 性别
--------------------------------------- -------------------- ---------- ------1 张一                            空的2 张二                          1 男3 张三                            空的4 张四                            空的5 张五                          2 女6 张六                          1 男7 张七                          2 女8 张八                          1 男

2.如果不希望列表中出现sex列,语句如下:

select u.id,u.name,(case u.sexwhen 1 then '男'when 2 then '女'else '空的'end)性别from users u;ID NAME                 性别
--------------------------------------- -------------------- ------1 张一                 空的2 张二                 男3 张三                 空的4 张四                 空的5 张五                 女6 张六                 男7 张七                 女8 张八                 男

3.将sum与case结合使用,可以实现分段统计。

 selectsum(case u.sex when 1 then 1 else 0 end)男性,sum(case u.sex when 2 then 1 else 0 end)女性,sum(case when u.sex <>1 and u.sex<>2 then 1 else 0 end)性别为空from users u;男性         女性       性别为空
---------- ---------- ----------3          2          0selectcount(case when u.sex=1 then 1 end)男性,count(case when u.sex=2 then 1 end)女,count(case when u.sex <>1 and u.sex<>2 then 1 end)性别为空from users u;男性          女       性别为空
---------- ---------- ----------3          2          0

mysql(case when then)用法相关推荐

  1. mysql case when then用法

    case when then 的基本用法 SELECTCASE WHEN b.is_leave = 0 THEN'在职' WHEN b.is_leave = 1 THEN'离职' ELSE '状态为空 ...

  2. MySQL case when then 用法

    Case具有两种格式.简单Case函数和Case搜索函数. –简单Case函数 CASE [col_name] WHEN [value1] THEN [result1]-ELSE [default] ...

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

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

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

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

  5. mysql数据库中case when 的用法

    场景1:比如说我们在数据库存了性别的字段,一般都是存0 和 1 代表男和女   然后我们会得到0和1之后在java中判断 ,很麻烦有么有?其实我们完全可以在sql中判断好之后拿来现成的.就是在sql中 ...

  6. mysql CASE WHEN的基础和多种用法

    CASE 计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果. CASE 搜索函数计算一组布尔表达式以确定结果.  ...

  7. mysql case快捷方法_MySQL case when使用方法实例解析

    首先我们创建数据库表: CREATE TABLE `t_demo` ( `id` int(32) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` i ...

  8. MySQL中Left Join用法

    MySQL中Left Join用法  例子:  user表:  id name  ---------  1 libk  2 zyfon  3 daodao  user_action表:  user_i ...

  9. mysql sql decode函数用法_Sql decode sign when length concat 用法详述

    案例1:查询表A数据,如果某个列(PARAM_VALUE)值太长,前台不好显示,就只取前20个字符:鼠标悬浮时再用层显示全部值: sql写法: select m.PARAM_VALUE as PARA ...

  10. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

最新文章

  1. Elmah 日志记录组件
  2. Oral English 1: A topic about public transportaion in Chicago.
  3. junit 单元测试 - 参数化测试
  4. SAP概念之Client(集团)
  5. python创建线程_多种方法实现 python 线程池
  6. RFC894--以太网上IP数据报的传输标准
  7. 五十、微信小程序云开发中的云数据库
  8. 线下报名 | YOCSEF TDS:深度强化学习的理论、算法与应用
  9. mysql-创建函数,存储过程以及视图
  10. linux脚本登录启动失败,linux – 在X上运行shell脚本失败登录尝试
  11. 最聪明的如何成为优秀的——微软高管指点成材路
  12. hive linux进程数,控制Hive MAP个数详解
  13. UVa 706 ZOJ 1146 LC-Display
  14. 2020-2-6 蓝桥杯阶段模拟总结
  15. xampp mysql使用教程_在Windows下XAMPP的安装及使用教程
  16. 小米手机root步骤
  17. bigdecimal不等于0怎么写_碰到“作品不适宜公开以及0播放”怎么办?
  18. k8s-滚动更新与健康检查
  19. Android 的媒体路由功能应用与框架解析
  20. wps和office哪个好用 wps和office兼容吗

热门文章

  1. CentOS6.5系统光纤连接存储的多路径配置及使用方法
  2. 基于JAVA人口老龄化常态下的社区老年人管理与服务平台计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  3. 智冠尝试包月免费并行 《新绝代双骄》4日实施双轨
  4. Gerrit、gitlab与jenkins集成讲解
  5. RDIFramework.NET平台代码生成器V3.2版本全新发布-更新于2017-02-27(提供下载-免费使用)...
  6. SQL技巧:使用AVG()函数计算占比
  7. 用了这么久线程池,你真的知道如何合理配置线程数吗?
  8. 教你用JAVA设计一个飞机大战的游戏
  9. QGroundcontrol生成安装包或Appimage
  10. 2022年产品经理NPDP考试题型有哪些?须知