检查jsonb字段是否包含数组

时间:2018-02-14 18:30:26

标签: type-inference postgresql-9.4 jsonb

我在PostgreSQL表中有一个jsonb字段,该字段应该包含类似数据{}的字典,但由于源数据问题,它的条目很少有数组。

我想清除那些条目。其中一种方法是执行以下查询 -

select json_field from data_table where cast(json_field as text) like '[%]'

但是这需要将每个jsonb字段转换为文本。由于data_table的订单数量为2亿条,这看起来有点过分。

我调查了pg_typeof但它返回了jsonb,它无法区分字典和数组。

有没有更有效的方法来实现上述目标?

1 个答案:

答案 0 :(得分:0)

How about using the json_typeof function?

select json_field from data_table where json_typeof(json_field) = 'array'