カテゴリ:

文字列とバイナリ関数 (一般)

SPLIT

特定の区切り文字で特定の文字列を分割し、結果を文字列の配列で返します。

ソース文字列内の連続する分割文字列、またはソース文字列の先頭または末尾に分割文字列が存在すると、出力に空の文字列が生じます。空の区切り文字列は、ソース文字列のみを含む配列になります。いずれかのパラメーターが NULLの場合、 NULL が返されます。

結果は、 FLATTENARRAY_SIZE などの半構造化データを操作する関数および構造で使用できます。

こちらもご覧ください

SPLIT_PART

構文

SPLIT(<string>, <separator>)

引数

文字列

部分に分割されるテキストです。

セパレーター

文字列を分割するテキストです。

戻り値

返される値のデータ型は ARRAYです。

照合の詳細

この関数は、次の照合仕様をサポートしません。

  • lower

  • upper

  • pi (句読点は区別しない)。

  • cs-ai (大文字と小文字は区別、アクセント記号は区別しない)。

出力配列の値には照合仕様が含まれていないため、それ以上の照合操作はサポートされません。

localhost IP アドレ ス 127.0.0.1 を4つの部分のそれぞれで構成される配列に分割します。

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

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

セパレーターとして垂直線を含む文字列を分割します(出力には空の文字列を含む)。

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

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

LATERAL FLATTEN 構造を使用して、単一の文字列から複数のレコードを生成するには、 SPLIT の結果を使用します。 FLATTEN は、 VARIANT、 OBJECT、または ARRAY 列を取り、側面ビュー、つまり FROM 句でその前にある他のテーブルを参照する相関を含むインラインビューを生成するテーブル関数です。

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