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> )
Copy

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 Parameter len 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 zwischen pos 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 und len größer null ist, wird die Operation effektiv zur Löschoperation (einige Zeichen werden gelöscht und keine hinzugefügt).

Nutzungshinweise

  • base_expr und insert_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  |
+-----+
Copy

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 |
+---------+
Copy

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  |
+-----+
Copy

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 |
+------+
Copy

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 |
+------+
Copy
SELECT INSERT('abc', NULL, 2, 'Z') as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy
SELECT INSERT('abc', 1, NULL, 'Z') as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy
SELECT INSERT('abc', 1, 2, NULL) as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy