Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein)

SPLIT

Teilt eine gegebene Zeichenfolge mit einem gegebenen Trennzeichen und gibt das Ergebnis in einem Array von Zeichenfolgen zurück.

Zusammenhängende geteilte Zeichenfolgen in der Quellzeichenfolge oder das Vorhandensein einer geteilten Zeichenfolge am Anfang oder Ende der Ergebnisse der Quellzeichenfolge führt zu einer leeren Zeichenfolge in der Ausgabe. Eine leere geteilte Zeichenfolge führt zu einem Array, das nur die Quellzeichenfolge enthält. Wenn einer der Parameter NULL ist, wird NULL zurückgegeben.

Das Ergebnis kann mit Funktionen und Konstrukten verwendet werden, die semistrukturierte Daten verarbeiten, z. B. FLATTEN, ARRAY_SIZE.

Siehe auch:

SPLIT_PART

Syntax

SPLIT(<string>, <separator>)

Argumente

Zeichenfolge

In Teile aufzuteilender Text.

Trennzeichen

Text, anhand dessen die Zeichenfolge aufgeteilt werden soll.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist ARRAY.

Sortierungsdetails

Diese Funktion bietet keine Unterstützung für folgende Sortierungsspezifikationen:

  • lower.

  • upper.

  • pi (ohne Beachtung der Interpunktion)

  • cs-ai (Beachtung von Groß-/Kleinschreibung, keine Beachtung von Akzenten)

Die Werte im Ausgabearray enthalten keine Sortierungsspezifikation und unterstützen daher keine weiteren Sortierungsoperationen.

Beispiele

Aufteilen der Localhost-IP-Adresse 127.0.0.1 in ein Array, das aus jedem der vier Teile besteht:

SELECT SPLIT('127.0.0.1', '.');

+-------------------------+
| SPLIT('127.0.0.1', '.') |
|-------------------------|
| [                       |
|   "127",                |
|   "0",                  |
|   "0",                  |
|   "1"                   |
| ]                       |
+-------------------------+

Teilen Sie eine Zeichenfolge auf, die vertikale Linien als Trennzeichen enthält (beachten Sie, dass die Ausgabe leere Zeichenfolgen enthält):

SELECT SPLIT('|a||', '|');

+--------------------+
| SPLIT('|A||', '|') |
|--------------------|
| [                  |
|   "",              |
|   "a",             |
|   "",              |
|   ""               |
| ]                  |
+--------------------+

Verwenden Sie das Ergebnis von SPLIT, um mit dem Konstrukt LATERAL FLATTEN mehrere Datensätze aus einer einzigen Zeichenfolge zu generieren. FLATTEN ist eine Tabellenfunktion, die eine VARIANT-, OBJECT- oder ARRAY-Spalte verwendet und eine laterale Ansicht erzeugt (d. h. eine Inline-Ansicht, die eine Korrelation enthält, die auf andere Tabellen verweist, die in der FROM-Klausel vorangehen):

SELECT * FROM persons;

------+---------------------+
 NAME |      CHILDREN       |
------+---------------------+
 Mark | Marky,Mark Jr,Maria |
 John | Johnny,Jane         |
------+---------------------+

SELECT name, C.value::string AS childName
FROM persons,
     LATERAL FLATTEN(input=>split(children, ',')) C;

------+-----------+
 NAME | CHILDNAME |
------+-----------+
 John | Johnny    |
 John | Jane      |
 Mark | Marky     |
 Mark | Mark Jr   |
 Mark | Maria     |
------+-----------+