Fonctions sur les valeurs de chaîne : substring

S'applique à : SQL Server

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

Syntaxe

  
fn:substring($sourceString as xs:string?,  
                          $startingLoc 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. S’il est supérieur à la longueur de la $sourceString, la chaîne de longueur nulle est retournée.

$length
[facultatif] Nombre de caractères à extraire. S’il n’est pas spécifié, il retourne tous les caractères 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 suivant 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 nulle. Sinon, si $startingLoc ou $length est la séquence vide, la séquence vide 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 « XQuery Functions Are Surrogate-Aware » dans la rubrique Changements cassants des fonctionnalités Moteur de base de données dans SQL Server 2016. Consultez également le niveau de compatibilité ALTER DATABASE (Transact-SQL) et le classement et la prise en charge Unicode.

Limites de mise en œuvre

SQL Server nécessite que les paramètres $startingLoc et $length soient de type xs :decimal au lieu de xs :double.

SQL Server permet $startingLoc et $length d’être la séquence vide, car la séquence vide est une valeur possible en raison d’erreurs dynamiques mappées à ().

Exemples

Cette rubrique fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type XML dans la AdventureWorks2022 base de données.

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

La requête récupère les 50 premiers caractères du texte qui décrit le modèle de produit, l’élément <Summary> du 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 points suivants dans la requête précédente :

  • La fonction string() retourne la valeur de chaîne de l’élémentSummary<>. 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 parce que vous ignorez ces éléments et récupérez tout le texte.

  • La fonction substring() récupère les 50 premiers caractères de la valeur de chaîne récupérée par la chaîne().

Voici un extrait du résultat :

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

Fonctions XQuery impliquant le type de données xml