欢迎投稿

今日深度:

case when then else end语句的用法(附demo),

case when then else end语句的用法(附demo),


目录
  •  例子一:看下select函数加case函数和不加case函数的区别
  • 例子二:   介绍下case函数的执行过程.
  • 例子三:   看下case函数后面加不加as的区别
  • 例子四:一列里面多次条件匹配
  • 例子五:多列的单条件匹配
  • 例子六:实战一
  • 例子七:实战二

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

  • case :表示需要处理的字段
  • when :表示条件
  • then :表示当when执行为true时,再执行的语句
  • else :表示当所有的when执行为false时,再执行的语句
  • end:表示 case 语句结束的结尾

--简单case函数

case sex
when '1' then '男'
when '2' then '女'
else '其他' end

 --case搜索函数--经常用的是这个

 case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。 
还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

--比如说,下面这段sql,你永远无法得到“第二类”这个结果

case when col_1 in ( 'a', 'b') then'第一类'
when col_1 in ('a')       then '第二类'
else '其他' end

这是原始表:

 例子一:看下select函数加case函数和不加case函数的区别

不加case函数的,SELECT  id,name,core,sex FROM student a ;

 加case函数的,SELECT (CASE WHEN a.`name`='张三' THEN a.core ELSE 0 END) AS '张三' , id,name,core,sex FROM student a ;

 可以看到,加了case函数的就是自己单独成一列,就是比不加多了一列数据,它并不会改变行的数量.

例子二:   介绍下case函数的执行过程.

SELECT (CASE WHEN a.`name`='张三' THEN a.core ELSE 0 END) AS '张三' FROM student a ;

 上面的执行过程:

进行匹配的是名字name,首先匹配第一行,name是等于张三,所以返回core也就是50
匹配第二行,name等于李四,不匹配,返回else的值也就是0
匹配第三行,name等于王五,不匹配,返回else的值也就是0
匹配第四行,name等于赵六,不匹配,返回else的值也就是0
所以得到结果:

例子三:   看下case函数后面加不加as的区别

先看下加as, SELECT (CASE WHEN a.`name`='张三' THEN a.core ELSE 0 END) AS '张三' FROM student a ; 

 然后是不加as,   SELECT (CASE WHEN a.`name`='张三' THEN a.core ELSE 0 END) FROM student a ; 

 可以看到, 加as就是对生成的列取个别名,  不加as的话默认的列名就是 case这整个标签.

例子四:一列里面多次条件匹配

SELECT (CASE WHEN a.`name`='张三' THEN a.core WHEN a.`name`='李四' THEN a.core END) AS '张三' FROM student a ;

执行过程:第一行匹配张三成功,返回50,第二行匹配李四成功返回60,三四两行不匹配返回null

例子五:多列的单条件匹配

SELECT (CASE WHEN a.`name`='张三' THEN a.core END) AS '张三',(CASE WHEN a.`name`='李四' THEN a.core END) AS '李四' FROM student a;

总结case语句能将行转换成列

例子六:实战一

有如下数据:

根据这个国家人口数据,统计亚洲和北美洲的人口数量。得到下面这个结果:

 查询sql:

select sum(population),
            case country
            when '中国'     then'亚洲'
            when '印度'     then'亚洲'
            when '日本'     then'亚洲'
            when '美国'     then'北美洲'
            when '加拿大'  then'北美洲'
            when '墨西哥'  then'北美洲'
            else '其他' end
            from   table_a
            group by case country
            when '中国'     then'亚洲'
            when '印度'     then'亚洲'
            when '日本'     then'亚洲'
            when '美国'     then'北美洲'
            when '加拿大'  then'北美洲'
            when '墨西哥'  then'北美洲'
            else '其他' end;

例子七:实战二

有如下数据:

按照国家和性别进行分组,得出结果如下:

查询sql:

select country,
            sum( case when sex = '1' then
            population else 0 end),  --男性人口
            sum( case when sex = '2' then
            population else 0 end)   --女性人口
            from table_a
            group by country;

到此这篇关于case when then else end语句的用法(附demo)的文章就介绍到这了,更多相关case when then else end内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

您可能感兴趣的文章:
  • SQL集合函数中case when then 使用技巧
  • sql学习之CASE WHEN THEN ELSE END的用法
  • mysql常用函数之group_concat()、group by、count()、case when then的使用
  • SQL中case when then else end用法实例
  • MySQL数据库case when then end的详细使用方法

www.htsjk.Com true http://www.htsjk.com/Sql_Server/47620.html NewsArticle case when then else end语句的用法(附demo), 目录 例子一:看下select函数加case函数和不加case函数的区别 例子二: 介绍下case函数的执行过程. 例子三: 看下case函数后面加不加as的区别 例子四...
评论暂时关闭