2010-05-07 90 views
1

我在我的SQL Server數據庫的一列中存儲了一個XML字符串。我試圖運行一個UPDATE語句,它將使某個字段成爲大寫字母。我可以在SELECT中輕鬆完成,但無法使其更新。在SQL Server中將XML更新爲大寫

此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 ?

回答

1

大寫加入到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

噢我看,我使用2005年;大概應該在原帖中提到。 – mint 2010-05-12 13:25:59

0

使用XQuery函數upper-case

+0

我看到的功能,但不知道在哪裏使用它......一直得到功能沒有發現錯誤,當我運行查詢... – mint 2010-05-07 12:57:11