Я работаю над таблицей на сервере sql, который хранит файл 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>
Я нашел что-то в inte rnet, как это и попытался.
Update Student
set dataxml = replace(cast(dataxml as nvarchar(max)),'/Report/Title/Student/InputNumber[2]>','InputText>')
WHERE id=10
Он говорит, что успешно обновлен , Но я не вижу изменений в XML. Как я могу это сделать?