Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein)

SPLIT_PART

Trennt eine gegebene Zeichenfolge auf und gibt den angeforderten Teil zurück.

Wenn einer der Parameter NULL ist, wird NULL zurückgegeben.

Siehe auch:

SPLIT

Syntax

SPLIT_PART(<string>, <delimiter>, <partNumber>)

Argumente

Zeichenfolge

In Teile aufzuteilender Text.

Trennzeichen

Text, der das Trennzeichen darstellt, das zum Auftrennen verwendet werden soll.

Teilnummer

Angeforderter Teil der Aufteilung (1-basiert).

Wenn der Wert negativ ist, werden die Teile von vom Ende der Zeichenfolge rückwärts gezählt.

Nutzungshinweise

  • Wenn die Teilnummer außerhalb des Bereichs liegt, ist der zurückgegebene Wert eine leere Zeichenfolge.

  • Wenn die Zeichenfolge mit dem Trennzeichen beginnt oder endet, betrachtet das System Leerzeichen vor bzw. nach dem Trennzeichen als gültigen Teil des geteilten Ergebnisses. Ein Beispiel dazu finden Sie unten im Abschnitt Beispiele.

  • Wenn die Teilnummer 0 ist, wird sie als 1 behandelt. Mit anderen Worten, es erhält das erste Element der Aufteilung. Um Verwirrung darüber zu vermeiden, ob Indizes auf 1- oder 0-basiert sind, empfiehlt Snowflake, die Verwendung von 0 als Synonym für 1 zu vermeiden.

  • Wenn das Trennzeichen eine leere Zeichenfolge ist, ist der zurückgegebene Wert nach der Teilung die Eingabezeichenfolge (die Zeichenfolge wird nicht geteilt).

Sortierungsdetails

Arguments with collation specifications are currently not supported.

Beispiele

Demonstrieren Sie die Teile, die von verschiedenen Werten für Teilnummer zurückgegeben werden.

select  0, split_part('11.22.33', '.',  0) UNION
select  1, split_part('11.22.33', '.',  1) UNION
select  2, split_part('11.22.33', '.',  2) UNION
select  3, split_part('11.22.33', '.',  3) UNION
select  4, split_part('11.22.33', '.',  4) UNION
select -1, split_part('11.22.33', '.', -1) UNION
select -2, split_part('11.22.33', '.', -2) UNION
select -3, split_part('11.22.33', '.', -3) UNION
select -4, split_part('11.22.33', '.', -4)
;
+----+---------------------------------+
|  0 | SPLIT_PART('11.22.33', '.',  0) |
|----+---------------------------------|
|  0 | 11                              |
|  1 | 11                              |
|  2 | 22                              |
|  3 | 33                              |
|  4 |                                 |
| -1 | 33                              |
| -2 | 22                              |
| -3 | 11                              |
| -4 |                                 |
+----+---------------------------------+

Zurückgeben des ersten und letzten Teils der localhost-IP-Adresse 127.0.0.1:

SELECT SPLIT_PART('127.0.0.1', '.', 1), SPLIT_PART('127.0.0.1', '.', -1);
+---------------------------------+----------------------------------+
| SPLIT_PART('127.0.0.1', '.', 1) | SPLIT_PART('127.0.0.1', '.', -1) |
|---------------------------------+----------------------------------|
| 127                             | 1                                |
+---------------------------------+----------------------------------+

Gibt den ersten und zweiten Teil einer Zeichenfolge zurück, die durch senkrechte Striche getrennt sind. Beachten Sie, dass das Trennzeichen der erste Teil der Eingabezeichenfolge ist und daher das erste Element nach dem Teilen eine leere Zeichenfolge ist.

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

Das folgende Beispiel zeigt ein Trennzeichen mit mehreren Zeichen:

SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2);
+------------------------------------------+
| SPLIT_PART('AAA--BBB-BBB--CCC', '--', 2) |
|------------------------------------------|
| bbb-BBB                                  |
+------------------------------------------+

Das folgende Beispiel zeigt, dass bei einer leeren Zeichenfolge als Trennzeichen, nach dem Teilen immer noch nur eine Zeichenfolge vorhanden ist:

select  1, split_part('user@snowflake.net', '',  1) UNION
select -1, split_part('user@snowflake.net', '', -1) UNION
select  2, split_part('user@snowflake.net', '',  2) UNION
select -2, split_part('user@snowflake.net', '', -2);
+----+------------------------------------------+
|  1 | SPLIT_PART('USER@SNOWFLAKE.NET', '',  1) |
|----+------------------------------------------|
|  1 | user@snowflake.net                       |
| -1 | user@snowflake.net                       |
|  2 |                                          |
| -2 |                                          |
+----+------------------------------------------+