PostgreSQL使用array_agg拼接字段时空值返回null如何解决?
问题原因
标准SQL中||字符串拼接运算符的特性是任意一个操作数为NULL时,整个拼接结果都会返回NULL,这就是你遇到聚合结果为NULL的根因。
解决方案
使用COALESCE函数提前将字段的NULL值替换为你需要输出的'null'字符串后再做拼接即可,修改后的SQL如下:
SELECT t.userId, array_agg(COALESCE(t.column1, 'null') || ';' || COALESCE(t.column2, 'null')) as aggregated FROM mytable t GROUP BY t.userId
说明
COALESCE函数会按顺序返回参数列表中第一个非NULL的值,所以当column1或column2为NULL时,会自动替换为字符串'null'再拼接,最终输出结果完全匹配你要求的「column1;column2」、「null;column2」、「column1;null」格式。
内容的提问来源于stack exchange,提问作者strangeQuirks
相关产品推荐
相关产品推荐

