Kategorien:

Zeichenfolgen- und Binärfunktionen (Abgleich/Vergleich)

SUBSTR , SUBSTRING

Gibt den Teil der Zeichenfolge oder des Binärwerts aus Basisausdruck zurück, beginnend mit dem durch Startausdruck angegebenen Zeichen/Byte mit optional begrenzter Länge.

Diese Funktionen sind gleichbedeutend.

Siehe auch:

LEFT , RIGHT

Syntax

SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )

SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )

Argumente

Basisausdruck

Dies muss ein VARCHAR- oder BINARY-Wert sein.

Startausdruck

Die Startposition sollte ein Ausdruck sein, der zu einer Ganzzahl ausgewertet wird. Sie gibt den Offset an, ab dem die Teilzeichenfolge beginnt. Der Offset wird gemessen in:

  • Die Anzahl der UTF-8 Zeichen, wenn die Eingabe VARCHAR lautet.

  • Die Anzahl der Bytes, wenn die Eingabe BINARY ist.

Die Startposition basiert auf 1 und nicht auf 0. SUBSTR('abc', 1, 1) gibt „a“ und nicht „b“ zurück.

Längenausdruck

Die Länge muss ein Ausdruck sein, der zu einer Ganzzahl ausgewertet wird. Es muss angeben:

  • Die Anzahl der zurückzugebenden UTF-8 Zeichen, wenn die Eingabe VARCHAR lautet.

  • Die Anzahl der zurückzugebenden Bytes, wenn die Eingabe BINARY ist.

Die Länge sollte größer oder gleich null sein. Wenn die Länge eine negative Zahl ist, gibt die Funktion eine leere Zeichenfolge zurück.

Rückgabewerte

Der Datentyp des zurückgegebenen Wertes entspricht dem Datentyp des Basisausdrucks (BINARY oder VARCHAR).

Nutzungshinweise

  • Bei Verwendung von Längenausdruck werden bis zu Längenausdruck Zeichen/Bytes zurückgegeben, andernfalls werden alle Zeichen bis zum Ende der Zeichenfolge oder des Binärwerts zurückgegeben.

  • Die Werte in Startausdruck beginnen bei 1:

    • Wenn 0 angegeben ist, wird dies als 1 behandelt.

    • Wenn ein negativer Wert angegeben ist, wird die Startposition als Startausdruck Zeichen/Bytes vom Ende der Zeichenfolge oder des Binärwerts berechnet. Wenn sich die Position außerhalb des Bereichs einer Zeichenfolge oder eines Binärwerts befindet, wird ein leerer Wert zurückgegeben.

  • Wenn eine der Eingaben NULL ist, wird NULL zurückgegeben.

Sortierungsdetails

  • Sortierung gilt für VARCHAR-Eingaben. Sortierung gilt nicht, wenn der Eingabedatentyp des ersten Parameters BINARY ist.

  • No impact. Obwohl Sortierungen syntaktisch akzeptiert werden, haben sie keine Auswirkungen auf die Verarbeitung. Beispielsweise zählen Sprachen mit zwei- und dreistelligen Buchstaben (z. B. „dzs“ im Ungarischen, „ch“ im Tschechischen) weiterhin zwei oder drei Zeichen (nicht ein Zeichen) für das Längenargument.

  • The collation of the result is the same as the collation of the input. Dies kann nützlich sein, wenn der zurückgegebene Wert als Teil verschachtelter Funktionsaufrufe an eine andere Funktion übergeben wird.

Beispiele

SELECT SUBSTR('testing 1 2 3', 9, 5) FROM x;

-------------------------------+
 substr('testing 1 2 3', 9, 5) |
-------------------------------+
 1 2 3                         |
-------------------------------+

SELECT '123456', pos, len, SUBSTR('123456', pos, len) FROM o;

----------+--------+-----+----------------------------+
 '123456' |  pos   | len | substr('123456', pos, len) |
----------+--------+-----+----------------------------+
 123456   | -1     | 3   | 6                          |
 123456   | -3     | 3   | 456                        |
 123456   | -3     | 7   | 456                        |
 123456   | -5     | 3   | 234                        |
 123456   | -7     | 3   |                            |
 123456   | 0      | 3   | 123                        |
 123456   | 0      | 7   | 123456                     |
 123456   | 1      | 3   | 123                        |
 123456   | 3      | 3   | 345                        |
 123456   | 3      | 7   | 3456                       |
 123456   | 5      | 3   | 56                         |
 123456   | 5      | 7   | 56                         |
 123456   | 7      | 3   |                            |
 123456   | [NULL] | 3   | [NULL]                     |
 123456   | [NULL] | 7   | [NULL]                     |
----------+--------+-----+----------------------------+