- 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:
Syntax¶
STRTOK(<string> [,<delimiter>] [,<partNr>])
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, aberstring
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 | +-------------------------+
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, 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 | +-------------------+
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 | +--------------------------+