Postgres查询:array_to_sting为空值

时间:2012-09-13 08:50:04

标签: postgresql concat

我正在尝试组合行并在Postgres查询中连接两个列(name,vorname)。

这样做很好:

SELECT nummer, 
       array_to_string(array_agg(name|| ', ' ||vorname), '\n') as name
FROM  (
   SELECT DISTINCT
          nummer, name, vorname
   FROM   myTable
   ) AS m
GROUP  BY nummer 
ORDER  BY nummer;

不幸的是,如果“vorname”为空,虽然name有值,但我没有得到任何结果。 是否有可能实现这一目标:

   array_to_string(array_agg(name|| ', ' ||vorname), '\n') as name

如果一列是空的吗?

感谢您的帮助,亲切的问候

2 个答案:

答案 0 :(得分:1)

使用coalesce将NULL值转换为可以连接的值:

array_to_string(array_agg(name|| ', ' ||coalesce(vorname, '<missing>')), '\n')

此外,您可以直接连接字符串,而无需使用string_agg函数将它们收集到数组中。

答案 1 :(得分:1)

如果你有9.1,那么你可以使用array_to_string的第三个参数 - 空字符串

array_to_string(array_agg(name), ',', '<missing>') from bbb