Fonctions sur des valeurs de chaîne - sous-chaîneFunctions on String Values - substring

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2012)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse 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.Returns part of the value of $sourceString, starting at the position indicated by the value of $startingLoc, and continues for the number of characters indicated by the value of $length.

SyntaxeSyntax


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?  

ArgumentsArguments

$sourceString$sourceString
Chaîne source.Source string.

$startingLoc$startingLoc
Point de départ dans la chaîne source à partir duquel la sous-chaîne commence.Starting point in the source string from which the substring starts. Si cette valeur est inférieure ou égale à 0, seuls les caractères dans des positions supérieures à zéro sont retournés.If this value is negative or 0, only those characters in positions greater than zero are returned. Si elle est supérieure à la longueur de la $sourceString, la chaîne de longueur nulle est retournée.If it is greater than the length of the $sourceString, the zero-length string is returned.

$length$length
[facultatif] Nombre de caractères à extraire.[optional] Number of characters to retrieve. Si non spécifié, il retourne tous les caractères à partir de l’emplacement spécifié dans $startingLoc jusqu'à la fin de chaîne.If not specified, it returns all the characters from the location specified in $startingLoc up to the end of string.

NotesRemarks

La version à trois arguments de la fonction retourne les caractères de $sourceString dont la position $p obéit à :The three-argument version of the function returns the characters in $sourceString whose position $p obeys:

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.The value of $length can be greater than the number of characters in the value of $sourceString following the start position. Dans ce cas, la sous-chaîne retourne les caractères jusqu'à la fin de $sourceString.In this case, the substring returns the characters up to the end of $sourceString.

Le premier caractère d'une chaîne se trouve à la position 1.The first character of a string is located at position 1.

Si la valeur de $sourceString est la séquence vide, elle est gérée en tant que la chaîne de longueur nulle.If the value of $sourceString is the empty sequence, it is handled as the zero-length string. Sinon, si le paramètre $startingLoc ou $length est la séquence vide, la séquence vide est retournée.Otherwise, if either $startingLoc or $length is the empty sequence, the empty sequence is returned.

Caractères supplémentaires (paires de substitution)Supplementary Characters (Surrogate Pairs)

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.The behavior of surrogate pairs in XQuery functions depends on the database compatibility level and, in some cases, on the default namespace URI for functions. 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.For more information, see the section "XQuery Functions Are Surrogate-Aware" in the topic Breaking Changes to Database Engine Features in SQL Server 2016. Consultez également ALTER DATABASE Compatibility Level ( Transact-SQL ) et prise en charge Unicode et du classement.Also see ALTER DATABASE Compatibility Level (Transact-SQL) and Collation and Unicode Support.

Limites de mise en œuvreImplementation Limitations

SQL Server requiert le $startingLoc et $length paramètres de type xs : decimal plutôt que xs : double.SQL Server requires the $startingLoc and $length parameters to be of type xs:decimal instead of xs:double.

SQL Server permet de $startingLoc et $length à la séquence vide, étant donné que la séquence vide est une valeur possible suite à des erreurs dynamiques en cours de mappage ().SQL Server allows $startingLoc and $length to be the empty sequence, because the empty sequence is a possible value as a result of dynamic errors being mapped to ().

ExemplesExamples

Cette rubrique fournit des exemples de XQuery relatifs à des instances XML stockés dans différentes xml type des colonnes dans le AdventureWorks2012AdventureWorks2012 base de données.This topic provides XQuery examples against XML instances stored in various xml type columns in the AdventureWorks2012AdventureWorks2012 database.

A.A. Utilisation de la fonction XQuery substring() pour extraire une synthèse partielle des descriptions de modèles de produits.Using the substring() XQuery function to retrieve partial summary product-model descriptions

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.The query retrieves the first 50 characters of the text that describes the product model, the <Summary> element in the 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 :Note the following from the previous query:

  • Le string() fonction retourne la valeur de chaîne de la <Summary> élément.The string() function returns the string value of the<Summary> element. 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.This function is used, because the <Summary> element contains both the text and subelements (html formatting elements), and because you will skip these elements and retrieve all the text.

  • Le substring() fonction extrait les 50 premiers caractères à partir de la valeur de chaîne récupérée par le string().The substring() function retrieves the first 50 characters from the string value retrieved by the string().

    Voici un extrait du résultat :This is a partial result:

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

Fonctions XQuery impliquant le type de données xmlXQuery Functions against the xml Data Type