In SQL Server können Sie T-SQL STUFF()
verwenden Funktion zum Einfügen einer Zeichenfolge in eine andere Zeichenfolge. Dadurch können Sie beispielsweise ein Wort an einer bestimmten Position einfügen. Außerdem können Sie ein Wort an einer bestimmten Position ersetzen.
Hier ist die offizielle Syntax:
STUFF ( character_expression , start , length , replaceWith_expression )
character_expression
ist die ursprüngliche Zeichenfolge. Dabei kann es sich tatsächlich um eine Konstante, Variable oder Spalte mit Zeichen- oder Binärdaten handeln.start
gibt die Startposition an (d. h. wo der neue String eingefügt wird).length
ist, wie viele Zeichen aus der ursprünglichen Zeichenkette gelöscht werden sollen.replaceWith_expression
ist die Zeichenfolge, die eingefügt wird.replaceWith_expression
kann eine Konstante, Variable oder Spalte mit Zeichen- oder Binärdaten sein.
Ein Wort ersetzen
Hier ist ein Beispiel, wo ich ein Wort innerhalb einer Zeichenfolge ersetze.
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Ergebnis:
Cats like dogs
In diesem Fall gebe ich das Wort like
an an Position 6 eingefügt werden soll, und dass 3 Zeichen aus der ursprünglichen Zeichenfolge gelöscht werden sollen (dadurch werden die Wörter and
gelöscht ). Also das Wort and
gelöscht und das Wort like
eingefügt wird.
Fügen Sie ein Wort ein
Hier ist ein Beispiel für das Einfügen eines Wortes, ohne etwas aus der ursprünglichen Zeichenfolge zu löschen:
SELECT STUFF('Cats and dogs', 10, 0, 'big ');
Ergebnis:
Cats and big dogs
Aus der ursprünglichen Zeichenfolge wird nichts gelöscht, weil ich 0
angegeben habe als drittes Argument.
Werte außerhalb des zulässigen Bereichs
Wenn die Startposition außerhalb der Länge des ursprünglichen Strings liegt, wird ein NULL-Wert zurückgegeben.
Beispiel:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Ergebnis:
NULL
In diesem Fall ist die ursprüngliche Zeichenfolge nicht 20 Zeichen lang, daher ist das Ergebnis NULL
.
Dasselbe passiert, wenn Sie 0
angeben oder eine negative Zahl:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');
Ergebnis:
NULL
Das Ergebnis dieser Beispiele steht im Gegensatz zu INSERT()
von MySQL -Funktion, die in diesem Szenario die ursprüngliche Zeichenfolge zurückgegeben hätte. INSERT()
von MySQL macht im Grunde dasselbe wie STUFF()
von T-SQL (außer in solchen Fällen).
Einfügen von NULL-Werten
Wenn Sie einen NULL-Wert einfügen, entfernt Ihr Ergebnis einfach die angegebene Anzahl von Zeichen von der angegebenen Position. Mit anderen Worten, es wird nichts eingefügt, aber Zeichen werden trotzdem wie angegeben entfernt.
Beispiel:
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Ergebnis:
Cats dogs
Dies ist ein weiterer Bereich, in dem sich MySQL von T-SQL unterscheidet. Führen Sie dieses Beispiel mit INSERT()
von MySQL durch Funktion hätte ein Ergebnis von NULL
zurückgegeben .