我正在使用SQL Server 2008.我在一個名爲RequestParameters
的字段中使用XML數據稱爲Requests
。一個例子是:SQL - 從表字段中讀取XML節點
<RequestParameters xmlns="http://schemas.datacontract.org/2004/07/My.Name.Space" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" z:Id="1">
<Data z:Id="2" i:type="CheckoutRequest">
<UserGuid>7ec38c44-5aa6-49e6-9fc7-25e9028f2148</UserGuid>
<DefaultData i:nil="true" />
</Data>
</RequestParameters>
我最終想要檢索UserGuid的值。爲此,我這樣做:
SELECT RequestParameters.value('(/RequestParameters/Data/UserGuid)[0]', 'uniqueidentifier') as UserGuid
FROM Requests
但是,我看到的結果都是NULL
。我究竟做錯了什麼?
它的功能就像一個魅力。請問爲什麼1而不是0? – 2013-05-06 06:15:27
是的,指定nanespace是必要的。 +1 – 2013-05-06 06:16:15
@Noobie'[1]'用於指定所需值的第一個實例。如果在XML中有多個UserGuid,那麼可以使用'[2]'獲取第二個實例。 '[0]'在第一個和第一個之前指定了值*。在第一個之前沒有任何東西,所以你沒有得到任何回報。 – 2013-05-06 06:19:35