- カテゴリ:
文字列とバイナリ関数 (一般)、 テーブル関数
SPLIT_TO_TABLE¶
このテーブル関数は、文字列を分割(指定された区切り文字に基づく)し、結果を行にフラット化します。
- こちらもご参照ください:
構文¶
SPLIT_TO_TABLE(<string>, <delimiter>)
引数¶
string
分割するテキストです。
delimiter
文字列を分割するテキストです。
戻り値¶
返される値はテーブルです。
返される行は、固定された列のセットで構成されます。
+-----+-------+-------+ | SEQ | INDEX | VALUE | |-----+-------+-------|
- SEQ:
入力レコードに関連付けられた一意のシーケンス番号です。シーケンスにギャップがないことや、特定の方法で順序付けられていることは保証されません。
- INDEX:
要素のインデックスです。1つのベースです。
- VALUE:
フラット化された配列の要素の値です。
注釈
クエリは、この関数のデータのソースとして機能した元の(相関した)テーブルの列にもアクセスできます。元のテーブルの単一の行がフラット化されたビューで複数の行になった場合、この入力行の値は SPLIT_TO_TABLEによって生成された行の数と一致するように複製されます。
例¶
定数入力の簡単な例を次に示します。
SELECT table1.value FROM table(split_to_table('a.b', '.')) AS table1 ORDER BY table1.value; +-------+ | VALUE | |-------| | a | | b | +-------+
次の例では、以下で作成されたテーブルとデータを使用します。
CREATE OR REPLACE TABLE splittable (v VARCHAR); INSERT INTO splittable (v) VALUES ('a.b.c'), ('d'), ('');このクエリは、関数の使用法を相関テーブルとして示しています。
SELECT * FROM splittable, LATERAL SPLIT_TO_TABLE(splittable.v, '.') ORDER BY SEQ, INDEX; +-------+-----+-------+-------+ | V | SEQ | INDEX | VALUE | |-------+-----+-------+-------| | a.b.c | 1 | 1 | a | | a.b.c | 1 | 2 | b | | a.b.c | 1 | 3 | c | | d | 2 | 1 | d | | | 3 | 1 | | +-------+-----+-------+-------+