用了lpad,结果没有成功,如下所示:
比如一个大字段如下:
<?xml version="1.0" encoding="UTF-8"?>
<templet><content><projectName>郑州万达城市广场</projectName><projectCd></projectCd><contractNo>PLZZ2010030901</contractNo><contentDesc>40369*0.95-32592=5758.55元</contentDesc><contractName>大商超市卸货平台道路及燃气中压站零星工程</contractName><contractTotalAmt>40,369.00</contractTotalAmt><contractPaidAmt>32,592.00</contractPaidAmt><payer>郑州中万建筑工程有限公司</payer><payerAccount></payerAccount><payerBank></payerBank><curPaymentAmt>5,758.55</curPaymentAmt><companyName>郑州中万建筑工程有限公司</companyName><landCoster>fuxz</landCoster><landProjecter>liyf</landProjecter><landFinancer>pengll</landFinancer><landManager>wangyu</landManager></content></templet>用了lpad,查询
select rsc.res_text,
lpad(rsc.res_text,length('<isSH>1</isSH></content></templet>'),'\<isSH\>1\<\/isSH\>\<\/content\>\<\/templet\>') 
from res1 rsc  
;
结果出来的是下面结果:<?xml version="1.0" encoding="UTF-
没有成功。
大家帮忙看下还有别的办法吗?

解决方案 »

  1.   

    lob字段一般要用dbms_lob操作
    使用普通的系统函数,会将其先转成varchar2类型,此时超过4000个字节的时候就会报错
    如果不会超过长度
    select rsc.res_text,
    replace(rsc.res_text,'</content></templet>','<isSH>1</isSH></content></templet>') 
    from res1 rsc  
    就可以了
      

  2.   

    dbms_lob是一个包,里面有一些用于操作lob对象的函数和存储过程
    具体用法可以搜索一下
      

  3.   

    使用 dbms_lob 替换 , 单独的 replace 不能操作大字段
      

  4.   

    dbms_lob里面没有replace函数,用dbms_lob里面的哪一个呢?
      

  5.   

    LZ 你在 dbms_lob 包中找一下 
    FRAGMENT_REPLACE

    INSTR 
    两个函数配合着使用,能完成你的要求,可能会有些麻烦。