当前位置:  数据库>oracle

【LOB】clob 字段中字符串如何替换

    来源: 互联网  发布时间:2017-06-26

    本文导语: 一、场景描述      业务需求,现在有张业务表的一个字段为clob类型,要将该字段中部分内容的日期'2016年04月22日’修改为'2016年04月11日’,该替换需要用到replace参数,  注意:Oracle 10g 版本以上可使用regexp_replace参数。让我们...

一、场景描述

     业务需求,现在有张业务表的一个字段为clob类型,要将该字段中部分内容的日期'2016年04月22日’修改为'2016年04月11日’,该替换需要用到replace参数,  注意:Oracle 10g 版本以上可使用regexp_replace参数。让我们实验来用用看。
 
二、实验
1.创建测试表及数据

  • SAM@OCM11G >create table test_lob(id number,text clob);
  • Table created.
  • 2.修改系统字符集,否则插入中文为乱码
     

  • [oracle@test ~]$ $LANG
  • en_US.UTF-8
  • [oracle@test ~]$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  • [oracle@test ~]$ $NLS_LANG
  • AMERICAN_AMERICA.AL32UTF8
  • 3.插入测试数据

  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (1,'你好,这里是SAM1的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (2,'你好,这里是SAM2的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (3,'你好,这里是SAM3的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (4,'你好,这里是SAM4的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (5,'你好,这里是SAM5的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (6,'你好,这里是SAM6的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (7,'你好,这里���SAM7的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >INSERT INTO TEST_LOB VALUES (8,'你好,这里是SAM8的测试环境。2016年12月30日');
  • 1 row created.
  • SAM@OCM11G >commit;
  • Commit complete.
  • SAM@OCM11G >set lines 200
  • SAM@OCM11G >select * from test_lob;
  •         ID TEXT
  • ---------- --------------------------------------------------------------------------------
  •          1 你好,这里是SAM1的测试环境。2016年12月30日
  •          2 你好,这里是SAM2的测试环境。2016年12月30日
  •          3 你好,这里是SAM3的测试环境。2016年12月30日
  •          4 你好,这里是SAM4的测试环境。2016年12月30日
  •          5 你好,这里是SAM5的测试环境。2016年12月30日
  •          6 你好,这里是SAM6的测试环境。2016年12月30日
  •          7 你好,这里是SAM7的测试环境。2016年12月30日
  •          8 你好,这里是SAM8的测试环境。2016年12月30日
  • 8 rows selected.
  • 4.修改lob字段中信息日期语法

  • UPDATE table t
  •    SET t.lob字段名 = REPLACE(t.lob字段名, ‘替换前内容', '替换后内容')
  •  WHERE t.sale like '%替换前%;
  • 5.修改lob字段中2016年12月30日为2017年01月07日
     
     

  • SAM@OCM11G >update test_lob t set t.text=replace(text,'2016年12月30日','2017年01月07日') where text like '%2016年12月30日%';
  • 8 rows updated.
  • SAM@OCM11G >commit;
  • 6.验证修改后的信息
     

  • SAM@OCM11G >select * from test_lob;
  •         ID TEXT
  • ---------- --------------------------------------------------------------------------------
  •          1 你好,这里是SAM1的测试环境。2017年01月07日
  •          2 你好,这里是SAM2的测试环境。2017年01月07日
  •          3 你好,这里是SAM3的测试环境。2017年01月07日
  •          4 你好,这里是SAM4的测试环境。2017年01月07日
  •          5 你好,这里是SAM5的测试环境。2017年01月07日
  •          6 你好,这里是SAM6的测试环境。2017年01月07日
  •          7 你好,这里是SAM7的测试环境。2017年01月07日
  •          8 你好,这里是SAM8的测试环境。2017年01月07日
  • 8 rows selected.
  • 三、总结
        修改LOB字段信息中的字符串,不能按照以往的的update 表名 set 字段名=新值 where … 。正确的方法是使用REPLACE函数来替换。注意where 条件就好,借着新年,也祝各位DBA朋友们,HAPPY NEW YEAR. 


        
     
     
     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3