gpt4 book ai didi

sql - 更新给定值的 Oracle XMLType 列内容

转载 作者:数据小太阳 更新时间:2023-10-29 01:51:36 26 4
gpt4 key购买 nike

我在 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>

我需要将“105”的答案更新为“205”。我过去使用 UPDATEXML 做过类似的事情。例如,如果我要更新只有一个答案的问题 ID 1,我可以这样做:

UPDATE SECTION_ANSWER sa
SET sa.section_answerxml = updatexml(sa.section_answerxml, '//section[@sectionID="1"]/question[@questionID="1"]/answer/text()', 'BLUE')

但是,这次我在更新问题 ID 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')

或者你可以按位置更新

UPDATE SECTION_ANSWER sa
SET sa.section_answerxml = updatexml(sa.section_answerxml,
'//section[@sectionID="1"]/question[@questionID="2"]/answer[position()=3]/text()', '205')

关于sql - 更新给定值的 Oracle XMLType 列内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20356417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com