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
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 MyBatis 中,可以使用 `<update>` 标签实现更新操作。如果需要在更新语句中使用 `case when` 语句,可以使用以下方法: 1. 使用 `<![CDATA[...]]>` 将更新语句包含在其中,以便可以在更新语句中使用 SQL 语句: ```xml <update id="updateUser" parameterType="User"> <![CDATA[ UPDATE user SET name = #{name}, age = #{age}, gender = CASE WHEN #{gender} = 'Male' THEN 'M' WHEN #{gender} = 'Female' THEN 'F' ELSE NULL END WHERE id = #{id} ]]> </update> ``` 在这个例子中,我们使用 `CASE WHEN` 条件语句将 `gender` 字段从 `Male` 或 `Female` 转换为 `M` 或 `F`,并将其设置为更新语句的一部分。 2. 使用动态 SQL 标签 `<choose>`、`<when>` 和 `<otherwise>` 来实现 `case when` 语句: ```xml <update id="updateUser" parameterType="User"> UPDATE user SET name = #{name}, age = #{age}, gender = <choose> <when test="gender == 'Male'">M</when> <when test="gender == 'Female'">F</when> <otherwise>null</otherwise> </choose> WHERE id = #{id} </update> ``` 在这个例子中,我们使用 `<choose>`、`<when>` 和 `<otherwise>` 标签来实现 `case when` 语句。在 `<choose>` 标签中,我们使用 `<when>` 条件标签测试 `gender` 字段是否等于 `Male` 或 `Female`,并将其转换为 `M` 或 `F`。如果 `gender` 字段不等于 `Male` 或 `Female`,则使用 `<otherwise>` 标签将其设置为 `null`。 以上两种方法都可以实现在更新语句中使用 `case when` 语句,并根据具体情况选择适合自己的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神雕大侠mu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值