oracle 更新 拼接,Oracle 用拼接字符串更新表 测试

oracle 更新 拼接,Oracle 用拼接字符串更新表 测试先看我们的数据:SQL>selectcount(1)fromdavewherecust_tellike’0551%’;https://www.cndba.cn/Dave/article/1485COUNT(1)———-2723在我们的Dave表里,cust_tel电话以0551开头的有2723条记录,现在我们把这些记录换成0556.我们使用如下方法测试一下:S…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

先看我们的数据:

SQL> select count(1) from dave where cust_tel like ‘0551%’;

https://www.cndba.cn/Dave/article/1485

COUNT(1)

———-

2723

在我们的Dave表里,cust_tel 电话以0551 开头的有2723条记录,现在我们把这些记录换成0556.

我们使用如下方法测试一下:

SQL> select * from v$version; BANNER———————————————————————-Oracle Database 11g Enterprise EditionRelease 11.2.0.1.0 – ProductionPL/SQL Release 11.2.0.1.0 – ProductionCORE 11.2.0.1.0 ProductionTNS for 32-bit Windows: Version 11.2.0.1.0- ProductionNLSRTL Version 11.2.0.1.0 – Production SQL> UPDATE dave SET cust_tel = ‘0556’|| SUBSTR (cust_tel, 5) WHERE cust_tellike ‘0551%’;2723 rows updated. SQL> rollback;Rollback complete. SQL> UPDATE dave SET cust_tel = ‘0556’|| SUBSTR (cust_tel, 5) WHERE cust_telin (select cust_tel from dave where cust_tel like ‘0551%’);2723 rows updated. SQL> rollback;Rollback complete.

写法很多,关键要注意效率问题,尤其是要更新的数据量比较大时。

https://www.cndba.cn/Dave/article/1485

另测试发现Oracle10g 和11g 在语法支持上的一些区别:

https://www.cndba.cn/Dave/article/1485

在Oracle 10g上可以使用如下语法:

BEGIN FOR cl IN (SELECT object_name from d1 WHEREobject_type=’TABLE’) LOOP UPDATE d1 SET object_name = ‘D’ || SUBSTR (object_name, 2) WHERE object_name = cl.object_name; END LOOP;END;

https://www.cndba.cn/Dave/article/1485

但如果在Oracle 11g中使用如下语法:

BEGIN FOR cl IN (SELECT id from dave WHERE cust_tel LIKE ‘0551%’) LOOP UPDATE dave SET cust_tel = ‘0556’ || SUBSTR (cust_tel, 5) WHERE id = cl.id; END LOOP;END;

则会一致处于等待状态。

https://www.cndba.cn/Dave/article/1485

但是在Oracle 11g中,可以使用如下的游标来处理,这种方法也是我们之前的提高的根据rowid 来完成大量的Update操作:

DECLARE CURSOR cur IS SELECT rowid as ROW_ID from dave WHEREcust_tel LIKE ‘0551%’ ORDER BY ROWID; —如果表的数据量不是很大,可以不用 order by rowid V_COUNTER NUMBER;BEGIN V_COUNTER := 0; FOR row IN cur LOOP UPDATE dave SET cust_tel = ‘0556’ || SUBSTR (cust_tel, 5) WHERE ROWID = row.ROW_ID; V_COUNTER := V_COUNTER + 1; IF (V_COUNTER>= 1000) THEN COMMIT; V_COUNTER := 0; END IF; END LOOP; COMMIT;END;

有关这种方法的具体说明参考:

https://www.cndba.cn/Dave/article/1485

——————————————————————————————————-

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:   http://blog.csdn.net/tianlesoftware

https://www.cndba.cn/Dave/article/1485

Weibo:            http://weibo.com/tianlesoftware

Skype:            tianlesoftware

——-加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请—-

DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)

DBA 超级群:63306533(满);  DBA4 群:83829929   DBA5群: 142216823 https://www.cndba.cn/Dave/article/1485

DBA6 群:158654907    DBA7 群:172855474  DBA8群:102954821

版权声明:本文为博主原创文章,未经博主允许不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192757.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Inputstream_java input

    Inputstream_java inputimportjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;publicclassInputStreamDemo{/**InputStream字节输入流*FileInputStream:文件字节输入…

    2022年9月21日
    4
  • 欧拉筛法(线性筛)的学习理解

    前言在刚接触编程语言时,对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期。在数论的学习中,我学到了埃氏筛法,O(nloglogn)的算法,而在一些数据范围达到1e7这样的题目中,也很难让人满意,于是我便学习了欧拉筛法,也即O(n)的线性筛法。埃氏筛法埃氏筛法的基本思想:从2开始,将每个质数的倍数都…

    2022年4月5日
    74
  • Java安全之Commons Collections7分析

    Java安全之Commons Collections7分析

    2020年11月20日
    197
  • 短短数月 两代“矿工”遭遇冰与火的洗礼「建议收藏」

    短短数月 两代“矿工”遭遇冰与火的洗礼「建议收藏」“比特币又跳水了。”  “那还有回暖的机会吗?”  最近这段时间,相信因为数字货币价格集体跳水而感到恐慌的,不止是炒币的投机客,还有大量“矿工”。  在过去一年多时间里,区块链逐渐变为人人热议的亲民话题,“挖矿”也成为很多人热议的火爆职业。甚至有金融界、互联网公司金领不惜放弃高薪,转型成为比特币“矿工”。  在过去的大半年时间里,比特币等数字货币也经历过几次不同程度的震荡。在遭遇价格上的大起大落之…

    2022年5月6日
    34
  • 使用python创建数组的方法[通俗易懂]

    使用python创建数组的方法[通俗易懂]本文介绍两种在python里创建数组的方法。第一种是通过字典直接创建,第二种是通过转换列表得到数组。方法1.字典创建(1)导入功能(2)创立字典(3)将字典带上索引转换为数组代码示例如下:importnumpyasnpimportpandasaspddata={“name”:[‘xiaozhang’,‘xiaoli’,‘lily’,‘tony’],“sex”:[‘bo…

    2022年5月2日
    53
  • java的api类_javaAPI类

    java的api类_javaAPI类扫描器Scanner可以用来从键盘输入读取数据extLine()获取一行字符串nextInt()获取一个整数nextFloat()获取一个浮点数大数字BigInteger如果我们需要操作一个很大的整数,它无法用long来表达时,就可以用BigIntegeradd()加subtract()减multiply()乘divide()除mod()取余包装类ØJDK提供了对所有数据类…

    2022年7月7日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号