Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein)

STRTOK

Übersetzt eine angegebene Zeichenfolge in Token und gibt den angeforderten Teil zurück.

Wenn der angeforderte Teil nicht vorhanden ist, wird NULL zurückgegeben. Wenn einer der Parameter NULL ist, wird NULL zurückgegeben.

Siehe auch:

SPLIT_PART

Syntax

STRTOK(<string> [,<delimiter>] [,<partNr>])

Argumente

Benötigt:

Zeichenfolge

Text, der in Token übersetzt werden soll.

Optional:

Trennzeichen

Text, der die Trennzeichen darstellt, anhand der in Token übersetzt werden soll. Jedes Zeichen in der Trennzeichenfolge ist ein Trennzeichen. Wenn Trennzeichen und Zeichenfolge leer sind, gibt die Funktion NULL zurück. Wenn das Trennzeichen leer ist, aber Zeichenfolge nicht leer ist, wird die gesamte Zeichenfolge als ein Token behandelt. Der Standardwert des Trennzeichens ist ein einzelnes Leerzeichen.

Teilnr

Angefordertes Token (1-basiert, d. h. das erste Token ist Token Nummer 1, nicht Token Nummer 0). Wenn die Token-Nummer außerhalb des Geltungsbereichs liegt, wird NULL zurückgegeben. Der Standardwert lautet 1.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist VARCHAR.

Nutzungshinweise

Wenn die Zeichenfolge mit dem Trennzeichen beginnt oder endet, betrachtet das System Leerzeichen vor bzw. nach dem Trennzeichen als ein gültiges Token.

Ähnlich wie bei Linux strtok() gibt STRTOK niemals eine leere Zeichenfolge als Token zurück.

Beispiele

Hier ist ein einfaches Beispiel für die Verwendung von STRTOK:

SELECT STRTOK('a.b.c', '.', 1);
+-------------------------+
| STRTOK('A.B.C', '.', 1) |
|-------------------------|
| a                       |
+-------------------------+

In diesem Beispiel wird gezeigt, wie Sie mehrere Trennzeichen verwenden, um das erste, zweite und dritte Token zurückzugeben, wobei die Trennzeichen „@“ und „.“ sind.

SELECT STRTOK('user@snowflake.com', '@.', 1);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 1) |
|---------------------------------------|
| user                                  |
+---------------------------------------+
SELECT STRTOK('user@snowflake.com', '@.', 2);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 2) |
|---------------------------------------|
| snowflake                             |
+---------------------------------------+
SELECT STRTOK('user@snowflake.com', '@.', 3);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 3) |
|---------------------------------------|
| com                                   |
+---------------------------------------+

Hier sehen Sie, was geschieht, wenn Sie versuchen, nach dem letzten möglichen Token in der Zeichenfolge zu indexieren:

select strtok('user@snowflake.com.', '@.', 4);
+----------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM.', '@.', 4) |
|----------------------------------------|
| NULL                                   |
+----------------------------------------+

Da in diesem Beispiel die Eingabezeichenfolge leer ist, gibt es 0 Elemente; daher befindet sich Element #1 hinter dem Ende der Zeichenfolge, sodass die Funktion anstelle einer leeren Zeichenfolge NULL zurückgibt:

select strtok('', '', 1);
+-------------------+
| STRTOK('', '', 1) |
|-------------------|
| NULL              |
+-------------------+

Hier ist ein Beispiel mit einer leeren Trennzeichenfolge:

select strtok('a.b', '', 1);
+----------------------+
| STRTOK('A.B', '', 1) |
|----------------------|
| a.b                  |
+----------------------+

Hier sind Beispiele mit NULL-Werten für jeden der Parameter:

select strtok(NULL, '.', 1);
+----------------------+
| STRTOK(NULL, '.', 1) |
|----------------------|
| NULL                 |
+----------------------+
select strtok('a.b', NULL, 1);
+------------------------+
| STRTOK('A.B', NULL, 1) |
|------------------------|
| NULL                   |
+------------------------+
select strtok('a.b', '.', NULL);
+--------------------------+
| STRTOK('A.B', '.', NULL) |
|--------------------------|
| NULL                     |
+--------------------------+