XPath 노드 테스트의 이름을 가진 열

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

열 이름이 XPath 노드 테스트 중 하나인 경우 다음 표와 같이 콘텐츠가 매핑됩니다. 열 이름이 XPath 노드 테스트인 경우 해당 노드에 콘텐츠가 매핑됩니다. 열의 SQL 형식이 xml면 오류가 반환됩니다.

열 이름 동작
text() 이름이 text()인 열의 경우 열의 문자열 값이 텍스트 노드로 추가됩니다.
comment() comment()라는 이름의 열의 경우 해당 열의 문자열 값이 XML 주석으로 추가됩니다.
node() node()의 이름을 가진 열의 경우 결과는 열 이름이 와일드카드 문자(*)인 경우와 동일합니다.
processing-instruction(name) 처리 명령 이름이 있는 열의 경우 해당 열의 문자열 값이 처리 명령 대상 이름에 대한 PI 값으로 추가됩니다.

다음 쿼리에서는 노드 테스트를 열 이름으로 사용하는 방법을 보여 줍니다. 결과 XML에 텍스트 노드와 주석을 추가합니다.

USE AdventureWorks2022;
GO
SELECT E.BusinessEntityID "@EmpID",
        'Example of using node tests such as text(), comment(), processing-instruction()'  as "comment()",
        'Some PI'                        as "processing-instruction(PI)",
        'Employee name and address data' as "text()",
        'middle name is optional'        as "EmpName/text()",
        FirstName                        as "EmpName/First",
        MiddleName                       as "EmpName/Middle",
        LastName                         as "EmpName/Last",
        AddressLine1                     as "Address/AddrLine1",
        AddressLine2                     as "Address/AddrLIne2",
        City                             as "Address/City"
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
    ON P.BusinessEntityID = E.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress AS BAE
    ON BAE.BusinessEntityID = E.BusinessEntityID
INNER JOIN Person.Address AS A
    ON BAE.AddressID = A.AddressID
WHERE  E.BusinessEntityID=1
FOR XML PATH;

결과는 다음과 같습니다.


<row EmpID="1">
<!--Example of using node tests such as text(), comment(), processing-instruction() -->
<?PI Some PI?>
    Employee name and address data
    <EmpName>middle name is optional
        <First>Ken</First>
        <Last>Sánchez</Last>
    </EmpName>
    <Address>
        <AddrLine1>4350 Minute Dr.</AddrLine1>
        <City>Minneapolis</City>
    </Address>
</row>

참고 항목