Использование XQuery в SQL 2005 для замены значения узла? - PullRequest
1 голос
/ 13 июня 2009

Учитывая следующую переменную XML, как я могу заменить " UNKNOWN " в узле StateCode на " FOO " в TSQL для MS SQL 2005?

declare @xmldata xml

set @xmldata = 

    '<Collection>
        <Plan>
            <StateCode>UNKNOWN</StateCode>
            <Type>Tubular</Type> 
        </Plan>
    </Collection>'

В отличие от подобного вопроса , который я обнаружил, это просто типизированная переменная XML, а не запись таблицы.

Должен ли я просто вставить значение переменной в таблицу и перейти к методу, представленному в этом вопросе, или я могу просто манипулировать переменной XML напрямую и выполнить замену?

1 Ответ

2 голосов
/ 13 июня 2009

Вы можете напрямую управлять переменной XML и выполнять замену:

set @xmldata.modify('replace value of (/Collection/Plan/Type/text())[1] with "new value"')

select @xml

(XPath может быть не совсем правильным, так как у меня нет доступа к серверу sql atm)

Также обратите внимание, что это не сработает, если UNKNOWN на самом деле пустой текст, который требует немного больше работы!)

...