Fonctions sur des valeurs de chaîne : sous-chaîne

 

S’applique à : SQL Server

THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

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

  
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?  

$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 la $sourceString, la chaîne de longueur nulle est retournée.

$length
[facultatif] Nombre de caractères à extraire. Si non spécifié, il retourne tous les caractères à partir de l’emplacement spécifié dans $startingLoc jusqu'à la fin de la chaîne.

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érieur 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, il est traité comme chaîne de longueur nulle. Sinon, si le paramètre $startingLoc ou $length est la séquence vide, la séquence vide est retournée.

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 fonctions sont substitut prenant en charge » dans la rubrique modifications avec rupture des fonctionnalités du moteur de base de données dans SQL Server 2016. Consultez également ALTER niveau de compatibilité de base de données (Transact-SQL) et classement et prise en charge Unicode.

SQL Server nécessite le $startingLoc et $length paramètres de type xs : decimal plutôt que xs : double.

SQL Server permet de $startingLoc et $length à la séquence vide, car la séquence vide est une valeur possible à la suite d’erreurs dynamiques en cours de mappage ().

Cette rubrique fournit des exemples de XQuery sur des instances XML stockés dans différentes xml colonnes de type le AdventureWorks2012 base de données.

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 ('http://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 :

  • Le string() fonction retourne la valeur de chaîne duSummary> élément. 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.

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

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

Fonctions XQuery sur le Type de données xml

Ajouts de la communauté

AJOUTER
Afficher: