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

Basisausdruck

Die Zeichenfolge oder der BINARY-Ausdruck, für die/den Sie Zeichen einfügen/ersetzen möchten.

Position

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 Position auf 1.

Gültige Werte liegen zwischen 1 und Länge der Zeichenfolge + 1 (einschließlich).

Wenn Sie Position auf einen Wert größer als die Länge der Zeichenfolge setzen, entspricht die Operation einem Anhängen. (Dazu muss auch der Parameter Länge 0 sein, da Sie nicht versuchen sollten, Zeichen nach dem letzten Zeichen zu löschen.)

Länge

Die Anzahl der Zeichen (beginnend bei Position), die Sie ersetzen möchten. Gültige Werte reichen von 0 bis zur Anzahl der Zeichen zwischen Position und dem Ende der Zeichenfolge. Wenn der Wert 0 ist, werden die neuen Zeichen hinzugefügt, ohne vorhandene Zeichen zu löschen.

Einfügeausdruck

Die Zeichenfolge, die in Basisausdruck eingefügt werden soll. Wenn diese Zeichenfolge leer ist und Länge größer null ist, wird die Operation effektiv zur Löschoperation (einige Zeichen werden gelöscht und keine hinzugefügt).

Nutzungshinweise

  • Basisausdruck und Einfügeausdruck sollten denselben Datentyp haben. Entweder sollten beide eine Zeichenfolge sein (z. B. VARCHAR) oder beide sollten Binärwerte sein.

  • Wenn eines der Argumente NULL ist, lautet der zurückgegebene Wert NULL.

Rückgabewerte

Gibt einen Zeichenfolge- oder BINARY-Wert zurück, der einer Kopie von Basisausdruck entspricht, wobei Länge Zeichen ab Position gelöscht wurden und anschließend Einfügeausdruck an Position eingefügt wurde.

Beachten Sie, dass die ursprüngliche Eingabe Basisausdruck 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 (wir löschen die angegebene Anzahl von Zeichen an der Startposition und fügen 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 |
+------+