我有一个CLOB
列,其数据类型为XML
:
<?xml version='1.0' encoding='UTF-8'?>
<testRules version="1.0">
<rule id="1839" name="remit_amount.minimum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">5.00</value>
</rule>
<rule id="1840" name="remit_amount.maximum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1000.00</value>
</rule>
</testRules>
现在我想将<rule id="1840">
<value
更新为1500.00。
请帮助我为上述更改获取正确的更新脚本。
答案 0 :(得分:0)
您可以参考以下示例示例并替换您的表格详细信息 -
create table t1 ( x clob );
INSERT
INTO t1 VALUES
(
'<Test>
<GROUP_TYPE>PR</GROUP_TYPE>
<GROUP_NAME a ="asdsada">A</GROUP_NAME>
<GROUP_NAME b ="bbbb">B</GROUP_NAME>
<UNIT>C</UNIT>
</Test>'
);
commit;
UPDATE t1
SET x= updatexml(xmltype.createxml(x),'/Test/GROUP_NAME/text()','CCC').getclobval()
WHERE ExtractValue(xmltype(x),'/Test/GROUP_NAME/@a')='asdsada';
commit;
这将为您提供所需的输出。
答案 1 :(得分:0)
您可以使用UPDATEXML
UPDATE test_xml SET col =
UPDATEXML(xmltype(col),
'/testRules/rule[@id="1839"]/value/text()','1500.00').getClobval();
请注意,XPATH表达式中的谓词将更新限制为正确的元素。 另请注意,此语句会更新表中的所有行,因此请在适当时添加WHERE条件。
<?xml version="1.0" encoding="UTF-8"?>
<testRules version="1.0">
<rule id="1839" name="remit_amount.minimum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1500.00
</value>
</rule>
<rule id="1840" name="remit_amount.maximum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1000.00
</value>
</rule>
</testRules>