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 | +-------+
以下两个示例使用下面创建的表和数据:
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 | +-----+-----+-------+-------+