In MySQL können Sie das INSERT()
verwenden Funktion zum Einfügen einer Zeichenkette in eine andere Zeichenkette.
Sie können entweder Teile der Zeichenfolge durch eine andere Zeichenfolge ersetzen (z. B. ein Wort ersetzen), oder Sie können sie unter Beibehaltung der ursprünglichen Zeichenfolge einfügen (z. B. ein Wort hinzufügen). Die Funktion akzeptiert 4 Argumente, die bestimmen, was die ursprüngliche Zeichenfolge ist, die Position, an der die neue Zeichenfolge eingefügt werden soll, die Anzahl der Zeichen, die aus der ursprünglichen Zeichenfolge gelöscht werden sollen, und die neue Zeichenfolge, die eingefügt werden soll.
Hier ist die Syntax:
INSERT(str,pos,len,newstr)
Wobei str
ist die ursprüngliche Zeichenfolge, pos
ist die Position, an der der neue String eingefügt wird, len
ist die Anzahl der Zeichen, die aus der ursprünglichen Zeichenfolge gelöscht werden sollen, und newstr
ist die neue Zeichenfolge, die eingefügt werden soll.
Ein Wort ersetzen
Hier ist ein Beispiel, in dem ich INSERT()
verwende um ein Wort innerhalb einer Zeichenkette zu ersetzen:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Ergebnis:
Cats like dogs
Dies ersetzt effektiv das Wort and
mit dem Wort like
. Ich habe 6
verwendet weil das Wort und an der 6-Zeichen-Marke begann und ich 3
verwendet habe denn so viele Zeichen möchte ich löschen (das Wort and
ist 3 Zeichen lang).
Fügen Sie ein Wort ein
Hier füge ich einfach ein Wort ein, ohne etwas aus der ursprünglichen Zeichenfolge zu löschen:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Ergebnis:
Cats and big dogs
Der Grund dafür, dass nichts aus der ursprünglichen Zeichenfolge gelöscht wird, liegt darin, dass ich 0
angegeben habe (was bedeutet, dass null Zeichen gelöscht werden sollten).
Werte außerhalb des zulässigen Bereichs
Wenn Sie eine Position angeben, die außerhalb der Länge des ursprünglichen Strings liegt, gibt MySQL den ursprünglichen String unverändert zurück.
Beispiel:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Ergebnis:
Cats and dogs
Hier ist ein weiteres Beispiel, in dem ich eine negative Startposition verwende:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Ergebnis:
Cats and dogs
Dies ist einer der Unterschiede zwischen INSERT()
von MySQL -Funktion und STUFF()
von Transact-SQL Funktion. In T-SQL das STUFF()
Funktion würde NULL
zurückgeben in diesen Fällen.
Einfügen von NULL-Werten
Ein weiterer Bereich, in dem MySQLs INSERT()
unterscheidet sich von STUFF()
von T-SQL ist mit NULL-Werten. Wenn Sie versuchen, einen NULL-Wert einzufügen, gibt MySQL NULL
zurück .
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Ergebnis:
NULL