The*_*ger 6 xml sql oracle xquery updatexml
我在Oracle 11g数据库中有一个表SECTION_ANSWER,它有一个XMLType列.XML非常简单,它遵循以下结构:
<section sectionID="1">
<question questionID="1" questionType="text">
<answer>Green</answer>
</question>
<question questionID="2" questionType="multiselect">
<answer>101</answer>
<answer>102</answer>
<answer>105</answer>
<answer>107</answer>
</question>
</section>
Run Code Online (Sandbox Code Playgroud)
我需要将'105'的答案更新为'205'.我过去使用UPDATEXML做过类似的事情.例如,如果我要更新只有一个答案的questionID 1,我可以执行以下操作:
UPDATE SECTION_ANSWER sa
SET sa.section_answerxml = updatexml(sa.section_answerxml, '//section[@sectionID="1"]/question[@questionID="1"]/answer/text()', 'BLUE')
Run Code Online (Sandbox Code Playgroud)
但是,这次更新questionID 2我遇到了麻烦,因为有多个答案节点,我不知道需要更新的内容将在哪个节点中.任何人都可以了解如何执行此类更新?
这将更新问题 2 中包含 105 的所有答案节点。
UPDATE SECTION_ANSWER sa
SET sa.section_answerxml = updatexml(sa.section_answerxml,
'//section[@sectionID="1"]/question[@questionID="2"]/answer[text()="105"]/text()', '205')
Run Code Online (Sandbox Code Playgroud)
或者您可以按位置更新
UPDATE SECTION_ANSWER sa
SET sa.section_answerxml = updatexml(sa.section_answerxml,
'//section[@sectionID="1"]/question[@questionID="2"]/answer[position()=3]/text()', '205')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5174 次 |
| 最近记录: |