oracle 批量更新之update case when then
oracle 批量更新之update case when then
CreationTime--2018年8月7日15点51分
Author:Marydon
1.情景描述
根据表中同一字段不同情况下的值修改为对应的内容,如何实现?
使用case when then else end语句。
2.错误用法
没有else语句,将会导致全表更新

证实:
结果展示:

说明:更新的是全表记录,而不是更新的只是符合上面三种情况的记录;
不在情况范围内的,执行的是将该字段值置空,sql语句相当于:
UPDATE BASE_AC_MODULE_BAK T
SET T.MODULEICON = CASE
WHEN T.MODULEICON = '/commons/images/img/add.gif' THEN
'/commons/images/img/add.png'
WHEN T.MODULEICON = '/commons/images/img/edit.gif' THEN
'/commons/images/img/update.png'
WHEN T.MODULEICON = '/commons/images/img/delete.gif' THEN
'/commons/images/img/delete.png'
ELSE
NULL
END
3.case when then else end语法
用法一:简单case语句
CASE SEX
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
用法二:case搜索语句
CASE WHEN SEX = '1' THEN '男'
WHEN SEX = '2' THEN '女'
ELSE '其他' END
用法说明:
与java的switch语句不同是,如果不声明ELSE语句,oracle会自动添加ELSE语句(ELSE NULL),当数据出现与case的情况都不匹配时,
显示的不是原数据,而是空值;

必须有END关键词声明结束CASE语句;
另外,需特别注意的是:使用CASE语句,无论是查询还是修改语句,在不加限制条件的情况下,默认是对全表进行操作!
4.正确用法
方法一
UPDATE BASE_AC_MODULE_bak T
SET T.MODULEICON = CASE
WHEN T.MODULEICON = '/commons/images/img/add.gif' THEN
'/commons/images/img/add.png'
WHEN T.MODULEICON = '/commons/images/img/edit.gif' THEN
'/commons/images/img/update.png'
WHEN T.MODULEICON = '/commons/images/img/delete.gif' THEN
'/commons/images/img/delete.png'
ELSE
T.MODULEICON
END
WHERE (T.MODULEICON = '/commons/images/img/add.gif' OR
T.MODULEICON = '/commons/images/img/delete.gif' OR
T.MODULEICON = '/commons/images/img/edit.gif')

else为什么可以省略?
更新加上限制条件后,只有16条数据符合要求并进行修改,不存在else的情况。
方法二:限制条件加在where后,多个条件之间使用or
UPDATE BASE_AC_MODULE_BAK T
SET T.MODULEICON = DECODE(T.MODULEICON,
'/commons/images/img/add.gif',
'/commons/images/img/add.png',
'/commons/images/img/edit.gif',
'/commons/images/img/update.png',
'/commons/images/img/delete.gif',
'/commons/images/img/delete.png')
WHERE (T.MODULEICON = '/commons/images/img/add.gif' OR
T.MODULEICON = '/commons/images/img/delete.gif' OR
T.MODULEICON = '/commons/images/img/edit.gif')
oracle 批量更新之update case when then的更多相关文章
- oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
1.情景展示 一共有22w条数据, 需要将A表的主键更新至B表的指定字段,如何快速完成更新? 2.解决方案 声明: 解决方案不只一种,该文章只介绍快速游标法及代码实现: 两张表的ID和ID_CAR ...
- oracle 批量更新表字段
(一) 将数字替换成汉字 第一步,去重查询 使用distinct关键字先对该字段值进行去重查询,看共有几种情况 --查询指定区间内表停诊字段的值 SELECT DISTINCT T.CLOSE_T ...
- oracle 批量更新之将一个表的数据批量更新至另一个表
oracle 批量更新之将一个表的数据批量更新至另一个表 CreationTime--2018年7月3日17点38分 Author:Marydon Oracle 将一个表的指定字段的值更新至另一个 ...
- mybatis执行批量更新batch update 的方法
1.数据库连接必须配置:&allowMultiQueries=true 我的配置如下:jdbc:mysql://10.20.13.16:3306/CALENDAR?useUnicode=tru ...
- oracle批量更新
oracle批量更新 学习了:http://blog.csdn.net/zkcharge/article/details/50855755 statement.addBatch(); statemen ...
- Mybatis在oracle批量更新
最近公司业务中为了提高效率要做mybatis批量更新,但是到了oracle数据库中做了好几次都没成功,后来发现mybatis最后少了个分号,可能是Mybatis内部做了异常try catche 处 ...
- Oracle批量更新数据,使用begin end
/* 使用begin end批量更新 注意end后面必须使用;结束 并且每条update语句都要用;来结束 所以close为;END; 是为了补全语法 */ <foreach collectio ...
- Oracle批量、大量Update方法总结
一.业务场景: (1)主从两个表,主表Student,有字段id.name.sex,从表Boy,有字段id.name,主从表同一对象id相同 (2)从表Boy的name属性被业务修改,定时批量处理主表 ...
- oracle 同时更新(update)多个字段多个值
--创建表A,B: create table A (a1 varchar2(33),a2 varchar2(33),a3 varchar2(33)); create table B (b1 varch ...
随机推荐
- 《TCP/IP具体解释卷2:实现》笔记--ICMP:Internet控制报文协议
ICMP在IP系统间传递差错和管理报文,是不论什么IP实现必须和要求的组成部分.能够把ICMP分成两类:差错和查询.查询报文 是用一对请求和回答定义的.差错报文通常包括了引起错误的IP包的第一个分片的 ...
- 与Win8之磁盘活动时间100%斗争心得
Windows8因人而异地会在使用过程中磁盘活动时间无缘无故提升到100%并且可能出现持续性抽风现象,具体表现为0%瞬间飙升至100%后又回落,或者一直保持在100%导致使用过程卡顿,认真阅读本文有助 ...
- 常用NFS mount选项介绍
通过NFS挂接远程主机的文件系统时,使用一些不同的选现可以使得mount比较简单易用.这些选项可以在mount命令中使用,也可以在/etc/fstab和autofs中设定. 以下是NFS mount ...
- MySQL数据库事务各隔离级别加锁情况--read uncommitted篇(转)
本文转自https://m.imooc.com/article/details?article_id=17291,感谢作者 1.目的 1.1 合适人群 1.数据库事务特征我只是背过,并没有很深刻的理解 ...
- 选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改
选择排序是外面循环的array[i]与内循环的array[j]比较.冒泡排序是内循环的相邻两个值做比较修改
- python文本 判断对象里面是否是类字符串
python文本 判断对象里面是否是类字符串 场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj): ...
- 1. python 字符串简介与常用函数
1. python中的字符串简介与常用函数 在python中,字符串变成了一个强大的处理工具集,他是不可变的,也就是说字符串包含字符与字符的顺序,他不可以原处修改 字符串是我们后面需要学习的稍大一点的 ...
- 使用 NVM 管理不同的 Node.js 版本
欢迎您帮忙纠错, 一起帮助更多的人. 一起来学习交流React, QQ群:413381701 首发于:https://github.com/Kennytian/learning-react-nativ ...
- Design Pattern Singleton 单一模式
单一模式的几个注意点: 一) 设计单一模式,首先须要把构造函数给私有化了,不让外界訪问,那么外界仅仅能通过提供的函数获取一个新的类. 二) C++的单一模式,记得要在类外初始化一个类,否则或内存出错的 ...
- [翻译] FlatUIKit
FlatUIKit FlatUIKit is a collection of iOS components styled with the "Flat UI" aesthetic ...