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