次の方法で共有


例: ELEMENTXSINIL ディレクティブの指定

要素中心の XML を取得する ELEMENT ディレクティブを指定した場合、列に NULL 値がある場合、対応する要素は EXPLICIT モードによって生成されません。 必要に応じて ELEMENTXSINIL ディレクティブを指定して、 xsi:nil 属性が値 TRUE で設定されている NULL 値の生成要素を要求できます。

次のクエリは、従業員アドレスを含む XML を構築します。 AddressLine2列とCity列の場合、列名は ELEMENTXSINIL ディレクティブを指定します。 これにより、行セット内の AddressLine2 列と City 列の NULL 値の要素が生成されます。

USE AdventureWorks2012;  
GO  
SELECT 1    as Tag,  
       NULL as Parent,  
       E.BusinessEntityID  as [Employee!1!EmpID],  
       BEA.AddressID as [Employee!1!AddressID],  
       NULL        as [Address!2!AddressID],  
       NULL        as [Address!2!AddressLine1!ELEMENT],  
       NULL        as [Address!2!AddressLine2!ELEMENTXSINIL],  
       NULL        as [Address!2!City!ELEMENTXSINIL]  
FROM   HumanResources.Employee AS E  
INNER JOIN Person.BusinessEntityAddress AS BEA  
    ON E.BusinessEntityID = BEA.BusinessEntityID  
  
UNION ALL  
SELECT 2 as Tag,  
       1 as Parent,  
       E.BusinessEntityID,  
       BEA.AddressID,  
       A.AddressID,  
       AddressLine1,   
       AddressLine2,  
       City   
FROM   HumanResources.Employee AS E  
INNER JOIN Person.BusinessEntityAddress AS BEA  
    ON E.BusinessEntityID = BEA.BusinessEntityID  
INNER JOIN Person.Address AS A  
    ON BEA.AddressID = A.AddressID  
ORDER BY [Employee!1!EmpID],[Address!2!AddressID]  
FOR XML EXPLICIT;  

結果の一部を次に示します。

<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

EmpID="1" AddressID="249">

<Address AddressID="249">

<AddressLine1>4350 Minute Dr.</AddressLine1>

<AddressLine2 xsi:nil="true" />

<City>Minneapolis</City>

</Address>

</Employee>

...

こちらもご覧ください

FOR XML で EXPLICIT モードを使用する