含有 XPath 節點測試名稱的資料行
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
如果資料行名稱是其中一個 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>