2010-05-07 5 views
1

Je stocke une chaîne XML dans une colonne de ma base de données SQL Server. J'essaie d'exécuter une instruction UPDATE qui va transformer un certain champ en majuscule. Je peux le faire facilement pendant un SELECT mais je n'arrive pas à le faire fonctionner avec une mise à jour.Mise à jour de XML en majuscules dans SQL Server

Cette instruction SELECT fonctionne
select Upper(XmlTest.value('(/CodeFiveReport/Owner/@UnitNumber)[1]', 'varchar(10)')) as UnitNumber from uploadreport

Mais je veux mettre à jour le XML que de façon permanente
Update table Set XmlString.Modify('replace value of (/Root/Node/@Field)[1] with ?

Répondre

1

a été ajouté à SQL Server SQL Server 2008, donc il n'y a pas de bonne solution avant cela, sauf si vous voulez utiliser des curseurs. Les travaux suivants dans 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

aww je vois, je utiliserai 2005; aurait probablement dû le mentionner dans le message original. – mint

0

Utilisez la fonction XQuery upper-case

majuscules
+0

j'ai vu cette fonction mais était pas sûr où l'utiliser ... continué à obtenir la fonction erreur introuvable quand j'ai couru la requête ... – mint

Questions connexes