类别:

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

STRTOK_SPLIT_TO_TABLE

使用给定的一组分隔符将字符串标记化,然后将结果展平为行。

另请参阅:

STRTOKSTRTOK_TO_ARRAY

语法

STRTOK_SPLIT_TO_TABLE(<string> [,<delimiter_list>])
Copy

实参

必填:

string

要标记化的文本。

可选:

delimiter_list

一组分隔符。可选。默认值为单个空格字符。

返回

这会返回一个表。

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

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

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

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a b'), ('cde'), ('f|g'), ('');
Copy

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

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

此示例与前面的示例大致相同,不同之处在于指定了多个分隔符:

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