开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute里面我需要把多个字段concat起来,有没有遇到null当''连接的?

请问下大数据计算MaxCompute里面我需要把多个字段concat起来,concat_ws和concat都是有任意字段是null就返回null,有没有遇到null当''连接的,不要其它的都是null?其它一些平台ws都是遇到null转''

展开
收起
真的很搞笑 2023-11-12 07:55:28 179 0
3 条回答
写回答
取消 提交回答
  • concat_ws和concat是入参为null返回null,添加一段代码:set odps.sql.hive.compatible=true;,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-11-12 15:34:31
    赞同 展开评论 打赏
  • 在MaxCompute中,如果你需要将多个字段concat起来,你可以使用CONCAT或者CONCAT_WS函数。然而,这两个函数都会在遇到null值时返回null。也就是说,如果其中一个字段的值为null,那么整个concat结果就会是null。

    不过,你可以使用COALESCE函数来处理这个问题。COALESCE函数会返回第一个非null的值。因此,你可以先用COALESCE函数将null值替换为''(空字符串),然后再进行concat操作。例如:

    SELECT CONCAT(COALESCE(field1, ''), COALESCE(field2, ''), ...) FROM table;
    

    这样,即使有字段的值为null,结果也不会是null,而会是将null值替换为''后的结果。

    2023-11-12 09:36:10
    赞同 展开评论 打赏
  • 返回值说明https://help.aliyun.com/zh/maxcompute/user-guide/concat?spm=a2c6h.13066369.question.7.79a927c0L8wO95

    使用示例
    示例1:连接ARRAY数组array(10, 20)和array(20, -20)。命令示例如下。

    --返回[10, 20, 20, -20]。
    select concat(array(10, 20), array(20, -20));
    示例2:ARRAY数组元素包含NULL。命令示例如下。

    --返回[10, NULL, 20, -20]。
    select concat(array(10, null), array(20, -20));
    示例3:任一ARRAY数组为NULL。命令示例如下。

    --返回NULL。
    select concat(array(10, 20), null);
    示例4:连接字符串aabc和abcde。命令示例如下。

    --返回aabcabcde。
    select concat('aabc','abcde');
    示例5:输入为空。命令示例如下。

    --返回NULL。
    select concat();
    示例6:任一字符串输入为NULL。命令示例如下。

    --返回NULL。
    select concat('aabc', 'abcde', null);

    2023-11-12 08:43:39
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载