- Catégories :
INSERT¶
Remplace une sous-chaîne de la longueur spécifiée, en commençant à la position spécifiée, par une nouvelle chaîne ou une nouvelle valeur binaire.
Cette fonction ne doit pas être confondue avec la commande INSERT DML.
Syntaxe¶
INSERT( <base_expr>, <pos>, <len>, <insert_expr> )
Arguments¶
base_expr
Chaîne ou expression BINARY pour laquelle vous souhaitez insérer/remplacer des caractères.
pos
Le décalage auquel commencer à insérer des caractères. Ceci est basé sur 1, pas sur 0. En d’autres termes, le premier caractère de la chaîne est considéré comme étant à la position 1 et non à la position 0. Par exemple, pour une insertion en début de chaîne, définir
pos
sur 1.Les valeurs valides sont comprises entre 1 et une de plus que la longueur de la chaîne (incluse).
Si vous définissez
pos
sur une longueur supérieure à celle de la chaîne, l’opération est équivalente à une opération d’ajout. (Cela nécessite également que le paramètrelen
soit égal à 0, car vous ne devez pas essayer de supprimer des caractères au-delà du dernier caractère.)len
Nombre de caractères (à partir de
pos
) à remplacer. Les valeurs valides vont de 0 au nombre de caractères compris entrepos
et la fin de la chaîne. S’il s’agit de 0, cela signifie d’ajouter les nouveaux caractères sans supprimer aucun caractère existant.insert_expr
La chaîne à insérer dans
base_expr
. Si cette chaîne est vide et silen
est supérieur à zéro, l’opération devient alors une suppression (certains caractères sont supprimés et aucun n’est ajouté).
Notes sur l’utilisation¶
base_expr
etinsert_expr
doivent être du même type de données ; l’un ou l’autre doivent être une chaîne (par exemple VARCHAR) ou les deux doivent être binaires.Si l’un des arguments est NULL, la valeur renvoyée est NULL.
Renvoie¶
Renvoie une chaîne ou un BINARY qui équivaut à créer une copie de base_expr
, en supprimant les caractères len
commençant par pos
, puis en insérant insert_expr
au niveau de pos
.
Notez que l’entrée d’origine base_expr
n’est pas modifiée. La fonction renvoie une copie séparée (modifiée).
Exemples¶
Voici un exemple simple :
SELECT INSERT('abc', 1, 2, 'Z') as STR; +-----+ | STR | |-----| | Zc | +-----+
Cet exemple montre que la longueur de la chaîne de remplacement peut être différente de celle de la sous-chaîne remplacée :
SELECT INSERT('abcdef', 3, 2, 'zzz') as STR; +---------+ | STR | |---------| | abzzzef | +---------+
Cela montre ce qui se passe lorsque la chaîne de remplacement est vide (la fonction supprime le nombre spécifié de caractères spécifiés à partir de la position de départ et n’ajoute aucun caractère) :
SELECT INSERT('abc', 2, 1, '') as STR; +-----+ | STR | |-----| | ac | +-----+
Ceci utilise INSERT
en tant qu’opération d’ajout, en ajoutant des caractères immédiatement après le dernier caractère de la chaîne d’origine :
SELECT INSERT('abc', 4, 0, 'Z') as STR; +------+ | STR | |------| | abcZ | +------+
Tous les éléments suivants renvoient NULL, car au moins l’un des arguments est NULL :
SELECT INSERT(NULL, 1, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', NULL, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, NULL, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, 2, NULL) as STR; +------+ | STR | |------| | NULL | +------+