У меня есть столбец XML в SQL Server 2005 со следующим упрощенным XML.
+----------+------------------+
| RecordID | ValueXML |
+----------+------------------+
| 1 | <value>x</value> |
| | |
+----------+------------------+
Если я хочу изменить это значение на y
, я использую следующую инструкцию SQL.
update ValueTable
set ValueXML.modify('
replace value of (/value/text())[1]
with ("y")')
where RecordID = 1
Это прекрасно работает. x
становится y
. Проблема возникает, если value
не задано ничего.
update ValueTable
set ValueXML.modify('
replace value of (/value/text())[1]
with ("")')
where RecordID = 1
Как только это произойдет, таблица будет выглядеть так.
+----------+------------------+
| RecordID | ValueXML |
+----------+------------------+
| 1 | <value /> |
| | |
+----------+------------------+
Теперь я больше не могу установить значение. Запрос на замену значения выполняется успешно, но без изменений.
Как я могу установить текст для закрытого элемента XML? Можно ли «открыть» элемент?