数仓 SQL 函数对照

首页 / 字符串

CONCAT 字符串拼接

CONCAT 把多个字符串首尾相连。函数名在各引擎都一样,但遇到 NULL 的处理不同:MaxCompute、StarRocks、Doris 和 Flink 只要有一个参数为 NULL 就返回 NULL,Hologres 会直接忽略 NULL。

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

各引擎写法

引擎支持写法说明依据
MaxCompute 支持 CONCAT(str1, str2[, ...]) 任一参数为 NULL 或没有参数时返回 NULL。也可以拼接数组,此时任一数组为 NULL 返回 NULL。 官方文档
Hologres 支持 CONCAT(str1, str2, ...) NULL 参数会被忽略:CONCAT('abcde', 2, NULL, 22) 返回 abcde222。 官方文档
StarRocks 支持 concat(str, ...) 任一参数为 NULL 时返回 NULL。 官方文档
Doris 支持 CONCAT(expr[, expr ...]) 任一参数为 NULL 时返回 NULL。 官方文档
Hive 支持 concat(str1, str2, ...) 也可以拼接 binary。函数手册没有说明 NULL 的处理方式。 官方文档
Spark SQL 支持 concat(col1, col2, ..., colN) Spark 1.5.0 起提供,2.4.0 起也可以拼接数组。文档没有说明 NULL 的处理方式。 官方文档
Flink SQL 支持 CONCAT(string1, string2, ...) 任一参数为 NULL 时返回 NULL。 官方文档

迁移注意事项

示例

拼接省份和城市

MaxCompute
SELECT CONCAT(province, '-', city) FROM stores;
Hologres
SELECT CONCAT(province, '-', city) FROM stores;  -- city 为 NULL 时返回 '浙江-'
StarRocks
SELECT concat(province, '-', city) FROM stores;

同类函数

最后核对日期: