- 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_expr
Die Zeichenfolge oder der BINARY-Ausdruck, für die/den Sie Zeichen einfügen/ersetzen möchten.
pos
Die 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
pos
auf 1.Gültige Werte liegen zwischen 1 und Länge der Zeichenfolge + 1 (einschließlich).
Wenn Sie
pos
auf einen Wert größer als die Länge der Zeichenfolge setzen, entspricht die Operation einem Anhängen. (Dazu muss auch der Parameterlen
0 sein, da Sie nicht versuchen sollten, Zeichen nach dem letzten Zeichen zu löschen.)len
Die Anzahl der Zeichen (beginnend bei
pos
), die Sie ersetzen möchten. Gültige Werte reichen von 0 bis zur Anzahl der Zeichen zwischenpos
und dem Ende der Zeichenfolge. Wenn der Wert 0 ist, werden die neuen Zeichen hinzugefügt, ohne vorhandene Zeichen zu löschen.insert_expr
Die Zeichenfolge, die in
base_expr
eingefügt werden soll. Wenn diese Zeichenfolge leer ist undlen
größer null ist, wird die Operation effektiv zur Löschoperation (einige Zeichen werden gelöscht und keine hinzugefügt).
Nutzungshinweise¶
base_expr
undinsert_expr
mü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 | +------+