Обновить XML в верхнем регистре в SQL Server - PullRequest
1 голос
/ 07 мая 2010

Я храню строку XML в столбце в моей базе данных SQL Server. Я пытаюсь запустить оператор UPDATE, который превратит определенное поле в верхний регистр. Я могу сделать это легко во время SELECT, но не могу заставить его работать с обновлением.

Этот оператор SELECT работает
select Upper(XmlTest.value('(/CodeFiveReport/Owner/@UnitNumber)[1]', 'varchar(10)')) as UnitNumber from uploadreport

Но я хочу постоянно обновлять XML как
Update table Set XmlString.Modify('replace value of (/Root/Node/@Field)[1] with ?

Ответы [ 2 ]

1 голос
/ 12 мая 2010

заглавные буквы были добавлены в SQL Server в SQL Server 2008, поэтому до этого нет хорошего решения, если вы не хотите использовать курсоры.В SQL Server 2008 работает следующее:

declare @xml xml

set @xml = N'<CodeFiveReport><Owner UnitNumber="Mixed"/></CodeFiveReport>'
select T1.C1.value('upper-case((/CodeFiveReport/Owner/@UnitNumber)[1])', 'varchar(10)') from @xml.nodes('/') T1(C1)

SET @xml.modify('
                replace value of (/CodeFiveReport/Owner/@UnitNumber)[1]
                with xs:string(upper-case((/CodeFiveReport/Owner/@UnitNumber)[1]))
                ')

select @xml
0 голосов
/ 07 мая 2010

Используйте функцию XQuery upper-case

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...