我正在处理 sql server 中的一个表,它将 xml 文件存储在一个列中。在那个 xml 文件中,我正在做一些更改。XML 文件如下所示:
<Report version=1>
<Title>
<Student>
<InputNumber type="int" min="0" max="100" name="age" description="Age
of student">
<Value>20</Value>
</InputNumber>
<InputNumber type="int" min="0" max="100" name="height"
description="height of student">
<Value>170</Value>
</InputNumber>
</Student>
</Title>
</Report>
我理解修改功能用于更新标签之间存在的属性或文本的用法:
UPDATE student
SET dataxml.modify('replace value of (/Report/@version)[1] with "2"')
WHERE id=10
or
UPDATE student
SET dataxml.modify('replace value of (/Report/Title/Student/InputNumber[1]/Value[1]/text())[1] with "21"')
WHERE id=10
但现在我想用另一个标签替换整个标签,即
<InputNumber type="int" min="0" max="100" name="height"
description="height of student">
<Value>170</Value>
</InputNumber>
和
<InputText name="height"
description="height of student">
<Value>170 cm</Value>
</InputText>
我在互联网上找到了类似的东西并尝试了。
Update Student
set dataxml = replace(cast(dataxml as nvarchar(max)),'/Report/Title/Student/InputNumber[2]>','InputText>')
WHERE id=10
它说更新成功。但我没有看到 XML 的变化。我怎样才能做到这一点?