You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行含unnest的SQL查询报错Cannot unnest type: row,求原因

为什么unnest(bar)会报错?

你碰到的Cannot unnest type: row错误,核心原因其实很直白:unnest()函数是用来展开数组(array)或集合(set)类型数据的,但你的bar列是行(row)类型,完全不匹配unnest的适用场景。

从你描述的bar列数据格式{thing1=abc, thing2=def}就能看出来,这是一个单行的结构化数据,不是包含多个行元素的数组/集合——如果是数组类型,格式应该是类似[{thing1=abc, thing2=def}, {thing1=ghi, thing2=jkl}]这种包含多个行的集合。

正确查询thing1的方法

既然bar是行类型,你根本不需要用unnest,直接通过行字段引用的方式就能拿到thing1的值:

select bar.thing1 from foo;

如果你的实际场景中,bar偶尔会是行数组(比如存在多个行元素的情况),那你需要先确认bar的真实数据类型。要是确实是行数组,那unnest才适用,写法会是这样:

select t.bar_tbl.thing1 
from foo 
cross join unnest(bar) as t(bar_tbl);

但结合你现在的报错和给出的数据格式来看,bar就是单个行类型,所以直接用行字段引用就能解决问题啦。

内容的提问来源于stack exchange,提问作者sshevlyagin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:31:14