Dans MySQL, vous pouvez utiliser le INSERT()
fonction pour insérer une chaîne dans une autre chaîne.
Vous pouvez soit remplacer des parties de la chaîne par une autre chaîne (par exemple, remplacer un mot), soit vous pouvez l'insérer tout en conservant la chaîne d'origine (par exemple, ajouter un mot). La fonction accepte 4 arguments qui déterminent quelle est la chaîne d'origine, la position avec laquelle insérer la nouvelle chaîne, le nombre de caractères à supprimer de la chaîne d'origine et la nouvelle chaîne à insérer.
Voici la syntaxe :
INSERT(str,pos,len,newstr)
Où str
est la chaîne d'origine, pos
est la position où la nouvelle chaîne sera insérée, len
est le nombre de caractères à supprimer de la chaîne d'origine, et newstr
est la nouvelle chaîne à insérer.
Remplacer un mot
Voici un exemple où j'utilise INSERT()
pour remplacer un mot dans une chaîne :
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Résultat :
Cats like dogs
Cela remplace effectivement le mot and
avec le mot like
. J'ai utilisé 6
parce que le mot et commençait à la marque de 6 caractères, et j'ai utilisé 3
parce que c'est le nombre de caractères que je veux supprimer (le mot and
comporte 3 caractères).
Insérer un mot
Ici, j'insère simplement un mot sans rien supprimer de la chaîne d'origine :
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Résultat :
Cats and big dogs
La raison pour laquelle cela ne supprime rien de la chaîne d'origine est que j'ai spécifié 0
(ce qui signifie qu'aucun caractère ne doit être supprimé).
Valeurs hors plage
Si vous spécifiez une position qui est en dehors de la longueur de la chaîne d'origine, MySQL renverra la chaîne d'origine inchangée.
Exemple :
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Résultat :
Cats and dogs
Voici un autre exemple où j'utilise une position de départ négative :
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Résultat :
Cats and dogs
C'est l'une des différences entre INSERT()
de MySQL fonction et STUFF()
de Transact-SQL une fonction. En T-SQL, le STUFF()
la fonction renverrait NULL
dans ces cas.
Insérer des valeurs NULL
Un autre domaine où INSERT()
de MySQL diffère de STUFF()
de T-SQL est avec des valeurs NULL. Si vous essayez d'insérer une valeur NULL, MySQL renverra NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Résultat :
NULL