列名が 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>