请问下大数据计算MaxCompute里面我需要把多个字段concat起来,concat_ws和concat都是有任意字段是null就返回null,有没有遇到null当''连接的,不要其它的都是null?其它一些平台ws都是遇到null转''
concat_ws和concat是入参为null返回null,添加一段代码:set odps.sql.hive.compatible=true;,此回答整理自钉群“MaxCompute开发者社区2群”
在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值替换为''后的结果。
返回值说明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);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。