数仓 SQL 函数对照

首页 / 字符串

CONCAT_WS 按分隔符拼接

CONCAT_WS 用指定的分隔符拼接多个字符串或一个字符串数组。多数引擎会跳过 NULL 值,但 MaxCompute 只要有一个参数为 NULL 就返回 NULL。

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

各引擎写法

引擎支持写法说明依据
MaxCompute 支持 CONCAT_WS(separator, str1, str2[, ...]) 也支持 CONCAT_WS(separator, array)。没有参数或任一参数为 NULL 时返回 NULL,不会跳过 NULL。 官方文档
Hologres 支持 CONCAT_WS(sep, str[, str ...]) 分隔符为 NULL 时返回 NULL,NULL 值会被忽略。参数可以是任意类型。 官方文档
StarRocks 支持 concat_ws(sep, str, ...) 分隔符为 NULL 时返回 NULL。NULL 值会被跳过,空字符串不会被跳过。 官方文档
Doris 支持 CONCAT_WS(sep, str[, str]) 也支持 CONCAT_WS(sep, array)。分隔符为 NULL 时返回 NULL,NULL 值会被跳过,空字符串不会。 官方文档
Hive 支持 concat_ws(SEP, A, B, ...) 也支持 concat_ws(SEP, array<string>),数组写法从 Hive 0.9.0 起提供。 官方文档
Spark SQL 支持 concat_ws(sep[, str | array(str)]+) Spark 1.5.0 起提供,跳过 NULL 值;分隔符为 NULL 时返回 NULL。 官方文档
Flink SQL 支持 CONCAT_WS(string1, string2, string3, ...) 第一个参数是分隔符,为 NULL 时返回 NULL;其余参数中的 NULL 会被跳过。 官方文档

迁移注意事项

示例

用斜杠拼接三级类目

MaxCompute
SELECT CONCAT_WS('/', NVL(cat1, ''), NVL(cat2, ''), NVL(cat3, '')) FROM items;
Hologres
SELECT CONCAT_WS('/', cat1, cat2, cat3) FROM items;
StarRocks
SELECT concat_ws('/', cat1, cat2, cat3) FROM items;

同类函数

最后核对日期: