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

Argumente

Benötigt:

string

Text, der in Token übersetzt werden soll.

Optional:

delimiter

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

partNr

Angefordertes Token, das 1-basiert ist (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                       |
+-------------------------+
Copy

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                                  |
+---------------------------------------+
Copy
SELECT STRTOK('user@snowflake.com', '@.', 2);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 2) |
|---------------------------------------|
| snowflake                             |
+---------------------------------------+
Copy
SELECT STRTOK('user@snowflake.com', '@.', 3);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 3) |
|---------------------------------------|
| com                                   |
+---------------------------------------+
Copy

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

Da in diesem Beispiel die Eingabezeichenfolge leer ist, gibt es 0 Elemente, und 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              |
+-------------------+
Copy

Hier ist ein Beispiel mit einer leeren Trennzeichenfolge:

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

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

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