我有一个表,其中有一个jsonb列(称为info),该列具有两种类型的形状:有时是一个对象,有时是一个对象数组。
只要该jsonb列为数组并且其中一个对象的'id'属性等于10,我希望能够获得该表中的所有行。
所以,这就是我尝试过的:
select * from users
CROSS JOIN LATERAL jsonb_array_elements(users.info) users_info
WHERE users_info->>'id' = 10
这不起作用,因为如果值是一个对象而不是一个数组,jsonb_array_elements
将会爆炸。我该如何实现?