Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
Retourne la valeur de $arg représentée sous forme de chaîne.
Syntaxe
fn:string() as xs:string
fn:string($arg as item()?) as xs:string
Arguments
$arg
Un nœud ou une valeur atomique.
Notes
Si $arg est la séquence vide, la chaîne de longueur nulle est retournée.
Si $arg est un nœud, la fonction retourne la valeur de chaîne du nœud obtenu à l’aide de l’accesseur chaîne-valeur. Celui-ci est défini dans les spécifications W3C XQuery 1.0 et XPath 2.0 Data Model.
Si $arg est une valeur atomique, la fonction retourne la même chaîne retournée par le cast d’expression que
xs:string, $arg, sauf indication contraire.Si le type de $arg est
xs:anyURI, l’URI est converti en chaîne sans échapper à des caractères spéciaux.Dans cette implémentation,
fn:string()sans argument ne peut être utilisé que dans le contexte d’un prédicat dépendant du contexte. Plus précisément, il ne peut être utilisé qu’entre crochets ([ ]).
Exemples
Cet article fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type XML dans la base de données AdventureWorks.
R : Utiliser la fonction de chaîne
La requête suivante récupère le <Features> nœud d’élément enfant de l’élément.<ProductDescription>
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/PD:ProductDescription/PD:Features
')
FROM Production.ProductModel
WHERE ProductModelID = 19;
Voici le résultat partiel :
<PD:Features xmlns:PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
These are the product highlights.
<p1:Warranty xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
<p1:WarrantyPeriod>3 years</p1:WarrantyPeriod>
<p1:Description>parts and labor</p1:Description>
</p1:Warranty>
...
</PD:Features>
Si vous spécifiez la string() fonction, vous recevez la valeur de chaîne du nœud spécifié.
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
string(/PD:ProductDescription[1]/PD:Features[1])
')
FROM Production.ProductModel
WHERE ProductModelID = 19;
Voici le résultat partiel.
These are the product highlights.
3 yearsparts and labor...
B. Utiliser la fonction de chaîne sur différents nœuds
Dans l'exemple suivant, une instance XML est affectée à une variable de type xml. Les requêtes sont spécifiées pour illustrer le résultat de l’application string() à différents nœuds.
DECLARE @x AS XML;
SET @x = '<?xml version="1.0" encoding="UTF-8" ?>
<!-- This is a comment -->
<root>
<a>10</a>
just text
<b attr="x">20</b>
</root>
';
La requête suivante extrait la valeur de chaîne du nœud de document. Cette valeur est le fruit de la concaténation de la valeur de chaîne de tous ses nœuds de texte descendants.
SELECT @x.query('string(/)');
Voici le résultat :
This is a comment 10
just text
20
La requête suivante essaie d'extraire la valeur de chaîne d'un nœud d'instruction de traitement. Le résultat est une séquence vide, car elle ne contient pas de nœud de texte.
SELECT @x.query('string(/processing-instruction()[1])');
La requête suivante extrait la valeur de chaîne du nœud de commentaire et renvoie le nœud de texte.
SELECT @x.query('string(/comment()[1])');
Voici le résultat :
This is a comment