sql语句里面的case when 和choose when的使用区别

sql语句里面的case when 和choose when的使用区别

这本是一个简单的知识,但在使用时还会模糊,特地记录: case when主要用于查询出的字段上,进行结果区分;
例如:

select sex,
(CASE 
		WHEN sex = '1' THEN '男'
         WHEN sex = '2' THEN '女'
ELSE '其他' END) as sexname
from sys_student

或者

select sex,
(CASE sex
		WHEN   '1'  THEN  '男'
         WHEN  '2'  THEN  '女'
ELSE '其他' END) as sexname
from sys_student

而choose when用于查询条件的判断,类似if ……else if

SELECT * FROM TNotific 
<where>
	<choose>
		<when test="method != null">
			and Method = #{method,jdbcType=VARCHAR}
		</when>
		<when test="statusOfread != null">
			and StatusOfread = #{statusOfread,jdbcType=VARCHAR}
		</when>
		<otherwise>
			and BizCaseId = #{bizCaseId,jdbcType=VARCHAR}
		</otherwise>
	</choose>
</where>

或者

select * from sys_student 
where 1 = 1 
        <choose>
            <when test="status == 0">
                and (status = 0 or status  is null or status  ='')
            </when>
            <when test="status  == 1">
                and status =1
            </when>
            <otherwise>
                and status = 2
            </otherwise>
        </choose>

这里可以不要otherwise,都用when
实例:

使用case when 实现列转行:

在这里插入图片描述
这是表中数据,要转成的效果是:

在这里插入图片描述

直接上代码:(典型的列转行)

SELECT 
name,
SUM(CASE SUBJECT WHEN '语文' THEN score end) as '语文',
SUM(CASE SUBJECT WHEN '数学' THEN score end) as '数学',
SUM(CASE SUBJECT WHEN '英语' THEN score end) as '英语' 
FROM student_grade
GROUP BY name

版权声明:本文为m0_37635053原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。