substring, fonction (XQuery)

Retourne une partie de la valeur de $sourceString, en commençant à la position indiquée par la valeur de $startingLoc, et en continuant le nombre de caractères indiqué par la valeur de $length.

Syntaxe

fn:substring($sourceString as xs:string?,
                          $startingLoc  as as xs:decimal?) as xs:string?

fn:substring($sourceString as xs:string?,
                          $startingLoc as xs:decimal?,
                          $length as xs:decimal?) as xs:string?

Arguments

  • $sourceString
    Chaîne source.

  • $startingLoc
    Point de départ dans la chaîne source à partir duquel la sous-chaîne commence. Si cette valeur est inférieure ou égale à 0, seuls les caractères dans des positions supérieures à zéro sont retournés. Si elle est supérieure à la longueur de $sourceString, la chaîne de longueur zéro est retournée.

  • $length
    [facultatif] Nombre de caractères à extraire. Si cette valeur n'est pas spécifiée, la fonction retourne tous les caractères à partir de l'emplacement spécifié dans $startingLoc jusqu'à la fin de la chaîne.

Notes

La version à trois arguments de la fonction retourne les caractères de $sourceString dont la position $p obéit à :

fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)

La valeur de $length peut être supérieure au nombre de caractères dans la valeur de $sourceString après la position de début. Dans ce cas, la sous-chaîne retourne les caractères jusqu'à la fin de $sourceString.

Le premier caractère d'une chaîne se trouve à la position 1.

Si la valeur de $sourceString est la séquence vide, elle est gérée comme chaîne de longueur zéro. Autrement, si $startingLoc ou $length est la séquence vide, celle-ci est retournée.

Caractères supplémentaires (paires de substitution)

Le comportement de la paire de substitution dans des fonctions XQuery dépend du niveau de compatibilité de la base de données et, dans certains cas, de l'URI de l'espace de noms par défaut des fonctions. Pour plus d'informations, consultez la section « Les fonctions XQuery prennent en charge la substitution » dans la rubrique Changements essentiels dans les fonctionnalités du moteur de base de données de SQL Server 2012. Consultez également Niveau de compatibilité ALTER DATABASE (Transact-SQL) et Prise en charge d'Unicode et du classement.

Limites de mise en œuvre

Pour SQL Server, les paramètres $startingLoc et $length parameters doivent être de type xs:decimal plutôt que xs:double.

SQL Server autorise $startingLoc et $length à être la séquence vide, car celle-ci est une valeur possible suite au mappage des erreurs dynamiques à ().

Exemples

Cette rubrique propose des exemples de XQuery relatifs à des instances XML stockées dans différentes colonnes de type xml tirées de la base de données AdventureWorks2012 .

A.Utilisation de la fonction XQuery substring() pour extraire une synthèse partielle des descriptions de modèles de produits.

La requête extrait les 50 premiers caractères du texte qui décrit le modèle de produit, l'élément <Summary> dans le document.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
    <Prod>{ substring(string((/pd:ProductDescription/pd:Summary)[1]), 1, 50) }</Prod>
 ') as Result
FROM Production.ProductModel
where CatalogDescription.exist('/pd:ProductDescription')  = 1;

Notez les éléments suivants relatifs à la requête précédente :

  • La fonction string() retourne la valeur de chaîne de l'élément <Summary>. Cette fonction est utilisée car l'élément <Summary> contient à la fois le texte et les sous-éléments (éléments de mise en forme html) et car vous ignorerez ces éléments et récupérerez tout le texte.

  • La fonction substring() extrait les 50 premiers caractères de la valeur de chaîne extraite par string().

Voici un résultat partiel :

ProductModelID Result
-------------- ----------------------------------------------------
19      <Prod>Our top-of-the-line competition mountain bike.</Prod> 
23      <Prod>Suitable for any type of riding, on or off-roa</Prod>
...

Voir aussi

Référence

Fonctions XQuery impliquant le type de données xml