2012-08-23 29 views
1

在sql查詢中,我運行這些命令,並且無論我嘗試什麼,我總是收到NUll。如何從TSQL中的這個XML中獲取數據

DECLARE @x AS XML 

SET @x = ' <Data> <Preference>Mail</Preference> <Comment>Changed Contact Communication Preference due to customer unsubscribed</Comment> </Data> ' 


SELECT @x.value('(//Data/@Preference)[0]','varchar(20)') AS Preference 

我做錯了什麼?

回答

1

使用這個XPath來代替:

SELECT @x.value('(//Data/Preference)[1]','varchar(20)') AS Preference 

所有的XPath陣列基於1 - 而不是從0 - 因此你[0]將不會返回任何東西。

第二,<Preference>是一個XML元素 - 不是屬性。 @Preference您試圖選擇一個XML 屬性