次の方法で共有


XPath ノード テストの名前を持つ列

列名が XPath ノード テストの 1 つである場合、コンテンツは次の表に示すようにマップされます。 列名が XPath ノード テストの場合、コンテンツは対応するノードにマップされます。 列の SQL 型が xml場合は、エラーが返されます。

列の名前 行動
text() text() という名前の列の場合、その列の文字列値がテキスト ノードとして追加されます。
comment() comment() という名前の列の場合、その列の文字列値が XML コメントとして追加されます。
node() node() という名前の列の場合、結果は列名がワイルドカード文字 (*) の場合と同じです。
処理命令(名前) 処理命令の名前を持つ列の場合、その列の文字列値が処理命令ターゲット名の PI 値として追加されます。

次のクエリは、ノード テストを列名として使用する方法を示しています。 結果の XML にテキスト ノードとコメントが追加されます。

USE AdventureWorks2012;  
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>

こちらもご覧ください

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