4
我使用SQL Server 2008 R2和我的存儲過程發生在其中有多個級別這樣的結構化的XML:如何讀取XML的一部分,在SQL Server中的XML 2008 R2
DECLARE @XML xml =
'<Main>
<User id="1">
<Departments isSingle="0">
<Department id="1">Admin</Department>
<Department id="2">HR</Department>
<Department id="3">Development</Department>
</Departments>
</User>
<User id="2">
<Departments isSingle="1">
<Department id="1">Admin</Department>
</Departments>
</User>
</Main>'
從上面的示例中,我想爲具有多個部門的用戶獲取2列(isSingle =「0」),其中第一列是用戶標識,第二列是整個XML。
我可以得到用戶ID與下面的查詢,但如何讓部門部分作爲XML:
SELECT
T.C.value('(../@id)','int') AS UserID
, T.C.value('(../Departments)[1]','nvarchar(max)') AS DepartmentsXML
FROM
@XML.nodes('/Main/User/Departments[@isSingle="0"]') AS T(C)
它不允許我在的地方使用xml
作爲數據類型的nvarchar(max)
如果細節不清楚,請告訴我,我會盡力完善。任何幫助表示讚賞。
您希望從XML中直接獲取整個「Departments」節點,而不是每個節點的Department ID和名稱值? –
@DarthContinent是的,我想部門的XML節點本身 – Wiz