case 和DECODE在oracle里用法

如下:
SELECT LogID,UserID,LogTime,Url,Description,(case OperateType when OperateType = 0 then '新增' when OperateType=1 then '修改' else '删除' end case) FROM LOG ????

1. case
SELECT LogID,UserID,LogTime,Url,Description,(
case
when OperateType = 0
then '新增'
when OperateType=1
then '修改'
else '删除'
end ) FROM LOG

2.DECODE的写法:
SELECT LogID,UserID,LogTime,Url,Description,
decode(OperateType,0,'新增',1,'修改','删除') OperationName
FROM LOG

建议用DECODE的写法

### OracleDECODE函数CASE WHEN语句的用法详解及示例 在Oracle数据库中,`DECODE` 函数 `CASE WHEN` 语句是两种常用的条件判断工具,能够根据不同的输入值返回相应的结果。它们适用于需要对数据进行动态转换或条件处理的场景。 #### DECODE函数 `DECODE` 函数类似于 `CASE WHEN` 语句,但语法更为简洁。其基本语法如下: ``` DECODE(表达式, 值1, 结果1, 值2, 结果2, ..., 默认值) ``` 如果 `表达式` 的值与某个 `值` 相等,则返回对应的 `结果`;如果没有匹配的值,则返回 `默认值`。 以下是一个示例,展示了如何使用 `DECODE` 函数对数据进行条件判断: ```sql SELECT ename, sal, DECODE(job, 'CLERK', '职员', 'SALESMAN', '销售', 'MANAGER', '经理', '其他职位') AS job_desc FROM emp; ``` 该查询根据 `job` 列的值返回对应的职业描述,例如将 `'CLERK'` 转换为 `'职员'`,将 `'SALESMAN'` 转换为 `'销售'`,其他情况则返回 `'其他职位'` [^4]。 `DECODE` 函数还常用于聚合查询中的条件统计。例如,以下查询统计了不同类别的 `id` 总: ```sql SELECT SUM(DECODE(name, 'a', id, 0)) AS id_1, SUM(DECODE(name, 'b', id, 0)) AS id_2, SUM(DECODE(name, 'c', id, 0)) AS id_3 FROM t_decode; ``` 该查询根据 `name` 列的值对 `id` 进行分类求,若 `name` 不等于指定值,则返回 0,从而不影响总计算 [^1]。 #### CASE WHEN语句 `CASE WHEN` 语句提供了更灵活的条件判断方式,支持更复杂的逻辑判断。其基本语法如下: ``` CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ... ELSE 默认值 END ``` 与 `DECODE` 函数不同,`CASE WHEN` 支持使用比较运算符(如 `>`, `<`, `BETWEEN` 等),而不仅仅是等值判断。 以下是一个使用 `CASE WHEN` 的示例,根据员工的工资水平返回不同的等级标签: ```sql SELECT ename, sal, CASE WHEN sal < 2000 THEN 'Low' WHEN sal BETWEEN 2000 AND 5000 THEN 'Medium' ELSE 'High' END AS salary_level FROM emp; ``` 该查询根据 `sal` 列的值返回 `'Low'`、`'Medium'` 或 `'High'` 作为工资等级,适用于对数据进行分类处理 [^3]。 `CASE WHEN` 也支持嵌套条件判断,适用于更复杂的业务逻辑。例如,以下查询根据员工的部门工资水平返回不同的奖金比例: ```sql SELECT ename, deptno, sal, CASE WHEN deptno = 10 AND sal > 3000 THEN 0.1 * sal WHEN deptno = 20 AND sal > 4000 THEN 0.15 * sal ELSE 0 END AS bonus FROM emp; ``` 该查询结合了多个条件,只有满足特定部门工资条件的员工才会有奖金计算结果 [^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值