【问题标题】:check if a jsonb field contains an array检查 jsonb 字段是否包含数组
【发布时间】:2018-07-25 10:13:24
【问题描述】:

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

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

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

但这需要将每个 jsonb 字段转换为文本。由于 data_table 有 2 亿个条目,这看起来有点矫枉过正。

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

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

【问题讨论】:

    标签: type-inference postgresql-9.4 jsonb


    【解决方案1】:

    使用json_typeof函数怎么样?

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

    【讨论】:

    • 上面写着function json_typeof(jsonb) doesn't exists
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多