用了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-
没有成功。
大家帮忙看下还有别的办法吗?
比如一个大字段如下:
<?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-
没有成功。
大家帮忙看下还有别的办法吗?
使用普通的系统函数,会将其先转成varchar2类型,此时超过4000个字节的时候就会报错
如果不会超过长度
select rsc.res_text,
replace(rsc.res_text,'</content></templet>','<isSH>1</isSH></content></templet>')
from res1 rsc
就可以了
具体用法可以搜索一下
FRAGMENT_REPLACE
和
INSTR
两个函数配合着使用,能完成你的要求,可能会有些麻烦。