H2数据库使用UNNEST展开数组字段失败的问题
H2数据库数组字段展开问题解决办法
H2数据库不支持直接用SELECT UNNEST(project_numbers) FROM PROJECTS这种语法展开数组字段,得通过JOIN关联的方式实现。
下面是两种可行的写法:
方法一:CROSS JOIN UNNEST
SELECT unnest_item FROM PROJECTS CROSS JOIN UNNEST(project_numbers) AS t(unnest_item)
如果需要保留原表其他字段,可加上表别名关联:
SELECT p.*, unnest_item FROM PROJECTS p CROSS JOIN UNNEST(p.project_numbers) AS t(unnest_item)
方法二:使用TABLE函数(H2 2.x及以上版本)
SELECT unnest_item FROM PROJECTS, TABLE(UNNEST(project_numbers)) AS t(unnest_item)
处理数组为NULL的情况
如果存在数组字段为NULL的行,CROSS JOIN会过滤掉这些行,换成LEFT JOIN可保留:
SELECT p.*, unnest_item FROM PROJECTS p LEFT JOIN UNNEST(p.project_numbers) AS t(unnest_item) ON 1=1
内容的提问来源于stack exchange,提问作者engineering_the_future
相关产品推荐
相关产品推荐

