STUFF (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

La fonction STUFF permet d'insérer une chaîne dans une autre chaîne. Elle efface d'abord le nombre de caractères spécifié dans la première chaîne à partir de la position de début. Ensuite, elle insère la seconde chaîne dans la première à partir de la position de début.

Conventions de la syntaxe Transact-SQL

Syntaxe

STUFF ( character_expression , start , length , replace_with_expression )

Arguments

expression_caractère

Expression de données caractères. character_expression peut être une constante, une variable ou une colonne de données binaires ou caractères.

start

Entier précisant la position de départ de la suppression et de l’insertion. Si start est négatif ou nul, une chaîne NULL est renvoyée. Si start est plus long que le premier argument character_expression, une chaîne NULL est renvoyée. start peut être de type bigint.

length

Entier spécifiant le nombre de caractères à supprimer. Si length est négatif, une chaîne NULL est renvoyée. Si length est plus long que le premier argument character_expression, la suppression s’effectue jusqu’au dernier caractère du dernier argument character_expression. Si length est égal à zéro, l’insertion se produit à l’emplacement de départ et aucun caractère n’est supprimé. length peut être de type bigint.

replace_with_expression

Expression de données caractères. replace_with_expression peut être une constante, une variable ou une colonne de données binaires ou caractères. Cette expression remplace length caractères de character_expression en commençant à start. Le fait de fournir NULL comme argument replace_with_expression supprime les caractères sans rien insérer.

Types de retour

Renvoie des données caractères si character_expression correspond à l’un des types de données caractères pris en charge. Renvoie des données binaires si character_expression correspond à l’un des types de données binaires pris en charge.

Remarques

Si la valeur de la position de début ou de la longueur est négative, ou bien si la valeur de la position de début est supérieure à la longueur de la première chaîne, une chaîne NULL est retournée. Si la position de départ est 0, une valeur NULL est retournée. Si la longueur à effacer est supérieure à celle de la première chaîne, tous les caractères de la première chaîne sont effacés à partir du caractère du début.

Une erreur se produit si la valeur résultante est plus grande que le maximum pris en charge par le type retourné.

Caractères supplémentaires (paires de substitution)

Lors de l’utilisation de classements de caractères supplémentaires (SC), les deux arguments character_expression et replace_with_expression peuvent inclure des paires de substitution. Le paramètre length compte chaque substitut dans character_expression comme un caractère unique.

Exemples

Dans l'exemple suivant, la procédure retourne une chaîne de caractères créée en supprimant trois caractères de la première chaîne (abcdef) à partir de la position 2 (c'est-à-dire au niveau du b) et en insérant la seconde chaîne au point de suppression.

SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO

Voici le jeu de résultats.

---------
aijklmnef
  
(1 row(s) affected)

Voir aussi