- Kategorien:
Zeichenfolgen- und Binärfunktionen (Allgemein)
INSERT¶
Ersetzt eine Teilzeichenfolge der angegebenen Länge, beginnend an der angegebenen Position, durch eine neue Zeichenfolge oder einen neuen Binärwert.
Hinweis: Diese Funktion darf nicht mit dem DML-Befehl INSERT verwechselt werden.
Syntax¶
INSERT( <base_expr>, <pos>, <len>, <insert_expr> )
Argumente¶
base_exprDie Zeichenfolge oder der BINARY-Ausdruck, für die/den Sie Zeichen einfügen/ersetzen möchten.
posDie Position, an der mit dem Einfügen von Zeichen begonnen werden soll. Diese Angabe ist 1-basiert, nicht 0-basiert. Mit anderen Worten, das erste Zeichen in der Zeichenfolge wird an Position 1 und nicht an Position 0 erwartet. Um beispielsweise mit dem Einfügen am Anfang der Zeichenfolge zu beginnen, setzen Sie
posauf 1.Gültige Werte liegen zwischen 1 und Länge der Zeichenfolge + 1 (einschließlich).
Wenn Sie
posauf einen Wert größer als die Länge der Zeichenfolge setzen, entspricht die Operation einem Anhängen. (Dazu muss auch der Parameterlen0 sein, da Sie nicht versuchen sollten, Zeichen nach dem letzten Zeichen zu löschen.)lenDie Anzahl der Zeichen (beginnend bei
pos), die Sie ersetzen möchten. Gültige Werte reichen von 0 bis zur Anzahl der Zeichen zwischenposund dem Ende der Zeichenfolge. Wenn der Wert 0 ist, werden die neuen Zeichen hinzugefügt, ohne vorhandene Zeichen zu löschen.insert_exprDie Zeichenfolge, die in
base_expreingefügt werden soll. Wenn diese Zeichenfolge leer ist undlengrößer null ist, wird die Operation effektiv zur Löschoperation (einige Zeichen werden gelöscht und keine hinzugefügt).
Nutzungshinweise¶
base_exprundinsert_exprmüssen denselben Datentyp haben. Entweder sind beide eine Zeichenfolge (z. B. VARCHAR), oder beide sind binär.Wenn eines der Argumente NULL ist, lautet der zurückgegebene Wert NULL.
Rückgabewerte¶
Gibt einen Zeichenfolge- oder BINARY-Wert zurück, wobei dies dem Erstellen einer Kopie von base_expr (Basisausdruck), dem Löschen von len Zeichen ab Position pos und dem anschließenden Einfügen von Ausdruck insert_expr an Position pos entspricht.
Beachten Sie, dass die ursprüngliche Eingabe base_expr nicht geändert wird. Die Funktion gibt eine separate (modifizierte) Kopie zurück.
Beispiele¶
Dies ist ein einfaches Beispiel:
SELECT INSERT('abc', 1, 2, 'Z') as STR; +-----+ | STR | |-----| | Zc | +-----+
Dieses Beispiel zeigt, dass die Länge der Ersetzungszeichenfolge von der Länge der ersetzten Teilzeichenfolge abweichen kann:
SELECT INSERT('abcdef', 3, 2, 'zzz') as STR; +---------+ | STR | |---------| | abzzzef | +---------+
Dies zeigt, was passiert, wenn die Ersetzungszeichenfolge leer ist (die Funktion löscht die angegebene Anzahl von Zeichen an der Startposition und fügt keine Zeichen hinzu):
SELECT INSERT('abc', 2, 1, '') as STR; +-----+ | STR | |-----| | ac | +-----+
Dies verwendet INSERT als Anfügeoperation, indem Zeichen unmittelbar nach dem letzten Zeichen der ursprünglichen Zeichenfolge hinzugefügt werden:
SELECT INSERT('abc', 4, 0, 'Z') as STR; +------+ | STR | |------| | abcZ | +------+
Die folgenden Werte geben alle NULL zurück, da mindestens eines der Argumente NULL ist:
SELECT INSERT(NULL, 1, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', NULL, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, NULL, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, 2, NULL) as STR; +------+ | STR | |------| | NULL | +------+