SQL Server 2008 R2を使用していますが、ストアドプロシージャは、次のような複数のレベルを持つ構造化XMLを取り込んでいます。
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>'
上記の例から、複数の部門を持つユーザー(isSingle = "0")の2つの列を取得します。最初の列はユーザーIDで、2番目の列は<Departments>
XML全体です。
次のクエリでユーザーIDを取得できますが、Departmentsセクションを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)
詳細が不明な場合はお知らせください。改善を試みます。どんな助けでも大歓迎です。