带有 unnest 的 PostgreSQL 查询不返回空值的结果行

问题描述

我试图查询将列中的逗号分隔值划分为不同记录的值,如果该列具有空值,则无法获取值,以下是示例

表名:test

id,name,list
1,a,a1,b1
2,b,null
3,c,c1

使用的查询

select id,unnest(string_to_array(list,',')) from test; 

结果:

1,a1
1,b1
3,c1

但是我需要考虑空值并返回如下结果,我尝试使用coalesce但是没有用,请帮助我解决问题

预期结果:

1,c1

解决方法

unnest() 与外连接一起使用:

select t.id,t.name,u.element 
from test t
  left join unnest(string_to_array(t.list,',')) on true
order by t.id;