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