数仓 SQL 函数对照

首页 / 字符串

SPLIT 字符串拆分

SPLIT 按分隔符把字符串拆成数组。MaxCompute、Hive 和 Spark 的分隔符按正则表达式处理,Doris 要改用 SPLIT_BY_STRING,Hologres 没有 SPLIT,要用 REGEXP_SPLIT_TO_ARRAY。

各引擎写法 · 迁移注意事项 · 示例

各引擎写法

引擎支持写法说明依据
MaxCompute 支持 SPLIT(source, delimiter[, trimTailEmpty]) 返回 ARRAY<STRING>。分隔符支持正则表达式。trimTailEmpty 默认为 true,会去掉末尾的空字符串。任一参数为 NULL 时返回 NULL。 官方文档
Hologres 需改写 REGEXP_SPLIT_TO_ARRAY(str, pattern) 字符串函数中没有 SPLIT。拆成数组用 REGEXP_SPLIT_TO_ARRAY,只取第 n 段用 SPLIT_PART(str, delimiter, n)。 官方文档
StarRocks 支持 split(content, delimiter) 返回 ARRAY<VARCHAR>。分隔符为空字符串时按单个字符拆分。文档没有说明分隔符是否按正则处理。 官方文档
Doris 需改写 SPLIT_BY_STRING(str, separator) 返回字符串数组,任一参数为 NULL 时返回 NULL。分隔符为空字符串时按字节拆分。 官方文档
Hive 支持 split(str, pat) 返回 array,pat 是正则表达式。 官方文档
Spark SQL 支持 split(str, regex[, limit]) Spark 1.5.0 起提供,按正则拆分,limit 限制数组的最大长度。 官方文档
Flink SQL 支持 SPLIT(string, delimiter) 字符串或分隔符为 NULL 时返回 NULL。只取第 n 段可以用 SPLIT_INDEX。 官方文档

迁移注意事项

示例

把逗号分隔的标签拆成数组

MaxCompute
SELECT SPLIT(tags, ',') FROM items;
Hologres
SELECT REGEXP_SPLIT_TO_ARRAY(tags, ',') FROM items;
StarRocks
SELECT split(tags, ',') FROM items;
Doris
SELECT SPLIT_BY_STRING(tags, ',') FROM items;
Spark SQL
SELECT split(tags, ',') FROM items;

同类函数

最后核对日期: