Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment insérer une chaîne dans une autre chaîne dans MySQL en utilisant INSERT()

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)

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