Partager via


Colonnes avec le nom d'un test de nœud XPath

Si le nom de colonne est l’un des tests de nœud XPath, le contenu est mappé comme indiqué dans le tableau suivant. Lorsque le nom de colonne est un test de nœud XPath, le contenu est mappé au nœud correspondant. Si le type SQL de la colonne est xml, une erreur est retournée.

Nom de la colonne Comportement
text() Pour une colonne portant le nom de text(), la valeur de chaîne de cette colonne est ajoutée en tant que nœud de texte.
comment() Pour une colonne portant le nom de commentaire(), la valeur de chaîne de cette colonne est ajoutée en tant que commentaire XML.
node() Pour une colonne portant le nom de node(), le résultat est le même que lorsque le nom de la colonne est un caractère générique (*).
instruction-de-traitement(name) Pour une colonne portant le nom d’une instruction de traitement, la valeur de chaîne de cette colonne est ajoutée en tant que valeur PI pour le nom cible de l’instruction de traitement.

La requête suivante montre l’utilisation des tests de nœud en tant que noms de colonnes. Il ajoute des nœuds de texte et des commentaires dans le code XML résultant.

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;  

Voici le résultat obtenu :

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

Voir aussi

Utiliser le mode PATH avec FOR XML