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

Comment insérer une chaîne dans une autre chaîne dans SQL Server à l'aide de STUFF()

Dans SQL Server, vous pouvez utiliser le T-SQL STUFF() fonction pour insérer une chaîne dans une autre chaîne. Cela vous permet de faire des choses comme insérer un mot à une position spécifique. Il vous permet également de remplacer un mot à une position spécifique.

Voici la syntaxe officielle :

STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression est la chaîne d'origine. Il peut en fait s'agir d'une constante, d'une variable ou d'une colonne de données binaires ou de caractères.
  • start spécifie la position de départ (c'est-à-dire où la nouvelle chaîne sera insérée).
  • length correspond au nombre de caractères à supprimer de la chaîne d'origine.
  • replaceWith_expression est la chaîne qui est insérée. replaceWith_expression peut être une constante, une variable ou une colonne de caractères ou de données binaires.

Remplacer un mot

Voici un exemple où je remplace un mot dans une chaîne.

SELECT STUFF('Cats and dogs', 6, 3, 'like');

Résultat :

Cats like dogs

Dans ce cas, je précise que le mot like doit être inséré à la position 6, et que 3 caractères doivent être supprimés de la chaîne d'origine (cela supprime le mot and ). Donc le mot and est supprimé et le mot like est inséré.

Insérer un mot

Voici un exemple d'insertion d'un mot sans rien supprimer de la chaîne d'origine :

SELECT STUFF('Cats and dogs', 10, 0, 'big ');

Résultat :

Cats and big dogs

Rien n'est supprimé de la chaîne d'origine car j'ai spécifié 0 comme troisième argument.

Valeurs hors plage

Si la position de départ est en dehors de la longueur de la chaîne d'origine, une valeur NULL est renvoyée.

Exemple :

SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');

Résultat :

NULL

Dans ce cas, la chaîne d'origine ne contient pas 20 caractères, le résultat est donc NULL .

La même chose se produit si vous fournissez 0 ou un nombre négatif :

SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');

Résultat :

NULL

Le résultat de ces exemples est en contraste avec le INSERT() de MySQL fonction, qui aurait renvoyé la chaîne d'origine dans ce scénario. INSERT() de MySQL fait fondamentalement la même chose que STUFF() de T-SQL (sauf dans des cas comme ceux-ci).

Insérer des valeurs NULL

Si vous insérez une valeur NULL, votre résultat supprimera simplement le nombre indiqué de caractères de la position indiquée. En d'autres termes, rien n'est inséré, mais les caractères sont toujours supprimés comme spécifié.

Exemple :

SELECT STUFF('Cats and dogs', 6, 3, NULL);

Résultat :

Cats dogs

C'est un autre domaine où MySQL diffère de T-SQL. Faire cet exemple avec INSERT() de MySQL la fonction aurait renvoyé un résultat de NULL .