예: ELEMENTXSINIL 지시문 지정

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

요소 중심 XML을 검색하는 ELEMENT 지시문을 지정하는 경우 열에 NULL 값이 있는 경우 해당 요소는 EXPLICIT 모드에서 생성되지 않습니다. 필요에 따라 ELEMENTXSINIL 지시문을 지정하여 xsi:nil 특성이 TRUE 값으로 설정된 NULL 값에 대한 생성 요소를 요청할 수 있습니다.

다음 쿼리는 직원 주소를 포함하는 XML을 생성합니다. 열의 City 경우 AddressLine2 열 이름은 지시문을 지정합니다ELEMENTXSINIL. 이렇게 하면 행 집합의 열 및 City NULL 값 AddressLine2 에 대한 요소가 생성됩니다.

USE AdventureWorks2022;
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>
...

참고 항목