问题描述
我正在通过大胆地使用UUID和那些数据来创建一些视图,我设法从第一层获得了期望的结果,但是在尝试获取第二层数据时遇到了问题。 我在tiledata列中工作的表是一些我想访问的嵌套数据,这是
运行查询时
SELECT tileid,nodegroupid,tiledata ->'34cfea8a-c2c0-11ea-9026-02e7594ce0a0' AS ACTOR
FROM tiles
WHERE tiledata -> '34cfea8a-c2c0-11ea-9026-02e7594ce0a0' IS NOT NULL;
我知道了
如何从此嵌套数据中获取例如resourceId,
解决方法
您可以使用jsonb_array_elements
函数将JSONB数组的每个元素提取为新的JSONB值,您可以在其上使用任何其他JSONB函数或运算符。
要知道的是,每个数组值都会在记录集中生成一个新行。
您可以尝试以下方法:
SELECT tileid,nodegroupid,jsonb_array_elements(tiledata ->'34cfea8a-c2c0-11ea-9026-02e7594ce0a0')->'resourceID'
FROM tiles
WHERE tiledata -> '34cfea8a-c2c0-11ea-9026-02e7594ce0a0' IS NOT NULL;
有关简单示例,请参见this fiddle。
有关更多详细信息,请参见the doc。