Oracle case when的使用方式

本文介绍了Oracle数据库中CASE WHEN语句的两种使用方式,包括需要判断符的情况和类似Java switch语法的用法。强调了在指定字段进行判断时,不应在WHEN后使用判断符,并解释了当满足一个WHEN条件后,后续WHEN条件不再执行的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的业务需求说明:

	开发中,需要编写一个sql查询数据,其中A表中的某个字段的具体值需要和B(一个字典表)
	表进行联查,而恰巧A表中的此字段是逗号分开的格式,类似 109901,109902 因此,在查
	询过程中需要判断此字段是否为此种情况,使用case when语句。

case when 有两种使用方式:

  1. 字段需要判断符进行判断(case 搜索)
CASE 
	when age > 18 
		then 
			'sql或者字符返回值' 
		else 
			'sql或字符返回值'
	END
/* CASE when age > 18 then 'sql或者字符返回值' else 'sql或字符返回值' END */
  1. 不需要运算符判断的
    如果不需要运算符判断,则需要使用case后面指定字段名字,类似于Java中switch的语法
CASE sex
	WHEN '1' THEN '男生'
	WHEN '2' THEN '女生'
ELSE '其他' END
/* CASE sex WHEN '1' THEN '男生' WHEN '2' THEN '女生' ELSE '其他' END */

– case when 最后总需要’end’去结束!
– case sex … 会使用sex的值直接和when后的值比较,因此case 指定字段后 when后面切不可写判断符 如: case sex when sex = ‘xx’ then … 这种形式
– 无论使用那种方式,如果写了多个when xx then xx, 当一个满足条件后,将自动跳出,后方的when将不会执行,如下所示:

select s.*,
       (case sex
         when 2 
           then '男'
         when 2
           then '女'
         else
          '未填写'
       end) xb
  from student s;

两个when都在判断sex为2时的值,如果此sql执行 所有sex=2的数据都将返回男;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值