类别:

字符串和二进制函数 (通用)、表函数

SPLIT_TO_TABLE

此表函数拆分字符串(基于指定的分隔符),并将结果展平为行。

另请参阅:

SPLIT

语法

SPLIT_TO_TABLE(<string>, <delimiter>)
Copy

实参

string

要拆分的文本。

delimiter

用于拆分字符串的文本。

返回

返回值是一个表。

返回的行由一组固定的列组成:

+-----+-------+-------+
| SEQ | INDEX | VALUE |
|-----+-------+-------|
Copy
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     |
+-------+
Copy

以下示例使用下面创建的表和数据:

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a.b.c'), ('d'), ('');
Copy

此查询显示了该函数作为关联表的用法:

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 |       |
+-------+-----+-------+-------+
Copy
语言: 中文