Megosztás a következőn keresztül:


XPath-csomópontteszt nevével rendelkező oszlopok

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ha az oszlopnév az XPath-csomóponttesztek egyike, a tartalom megfeleltetése az alábbi táblázatban látható módon történik. Ha az oszlopnév egy XPath-csomópont teszt, a tartalmat a megfelelő csomópontra képezzük le. Ha az oszlop SQL-típusa xml, a rendszer hibát ad vissza.

Az oszlop neve Magatartás
szöveg() Szöveg() nevű oszlop esetén az oszlop sztringértéke szövegcsomópontként lesz hozzáadva.
megjegyzés() Megjegyzés() nevű oszlop esetén az oszlop sztringértéke XML-megjegyzésként lesz hozzáadva.
csomópont() Csomópont() névre hallgató oszlop esetében az eredmény ugyanaz, mint amikor az oszlop neve egy helyettesítő karakter (*).
feldolgozási utasítás(név) Egy feldolgozási utasítás nevével rendelkező oszlop esetében a rendszer a feldolgozási utasítás célnevének PI-értékeként adja hozzá az oszlopban lévő sztringértéket.

Az alábbi lekérdezés a csomóponttesztek oszlopnevekként való használatát mutatja be. Szöveges csomópontokat és megjegyzéseket ad hozzá az eredményként kapott XML-fájlhoz.

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;

Ez az eredmény:


<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>

Lásd még