Oracle应用之批量递增更新数据脚本
2020-06-24 04:13
896 查看
需求:更新用户表的工号,格式为“GD1,GD2,…”的格式,如果有数据取最大值再递增
E1:先查询出是否有数据,有数据取最大值再递增,使用nvl函数
/* 查询max值*/ select nvl(max(to_number(replace(t.user_num, 'GD', ''))), 0) from t_user t where t.user_num like 'GD%';
E2:创建Oracle序列,start with改为max值
/* Create sequence,start with改为max值 */ create sequence user_num_t_user minvalue 1 maxvalue 999999999999999999999999999 start with 200 increment by 1 cache 20; commit; /* drop sequence */ drop sequence user_num_t_user;
E3:批量更新
/* batch update*/ update t_user set user_num = 'GD' || user_num_t_user.nextval where user_num is null and IS_OUTNET_REG = 0;
E4:如果下次使用序列,记得更改start with的值,因为每次使用都会更新这个值的
上面方法是使用Oracle序列的方法,如果用Oracle的rownum,也是可以实现需求的,脚本如:
update t_user set user_num = 'GD' || (rownum + (select nvl(max(to_number(replace(t.user_num, 'GD', ''))), 0) from base_user t where t.user_num like 'GD%')) where user_num is null;
相关文章推荐
- oracle批量新增更新数据
- PreparedStatement 批量更新,插入数据到Oracle mysql
- Oracle 使用MERGE INTO 语句更新数据的脚本
- oracle批量新增更新数据
- mybatis+Oracle 批量插入数据,有数据做更新操作
- oracle 批量更新之将A表数据批量更新至B表
- ORACLE 和SQLSERVER 两表之间批量更新数据对比
- 在MySQL命令行窗口执行sql脚本,批量执行SQL语句,批量更新数据
- SQL脚本实现两张关联数据表之间批量更新UPDATE
- ORACLE 和SQLSERVER 两表之间批量更新数据对比
- Oracle中采用存储过程的方式批量更新数据
- oracle批量新增字段 数据赋值应用
- oracle 执行sql文件脚本,批量插入或批量更新
- Oracle数据库案例整理-执行Oracle脚本失败或异常-SQL命令中字符串参数使用双引号导致更新数据库表信息失败
- Oracle数据的批量更新
- 利用JDBC中处理批量更新oracle数据
- Mybatis+Oracle进行数据的批量插入和更新
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 使用shell脚本实现php应用的批量更新
- ORACLE 大数据批量更新 MERGE INTO 代替 UPDATE/INSERT INTO 提升性能