加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL从jsonb中提取键,异常“无法在标量上调用jsonb_object

发布时间:2020-12-13 15:53:34 所属栏目:百科 来源:网络整理
导读:我想在Postgres用jsonb来解决问题.这里有很多问题,我想做的是: SELECT table.column-'key_1' as a FROM "table" 我试过 – 还有一些括号的组合,但我总是得到一个零. 所以我试图先获取所有键,看看它是否甚至识别jsonb. SELECT jsonb_object_keys(table.colum
我想在Postgres用jsonb来解决问题.这里有很多问题,我想做的是:

SELECT table.column->>'key_1' as a FROM "table"

我试过 – >还有一些括号的组合,但我总是得到一个零.

所以我试图先获取所有键,看看它是否甚至识别jsonb.

SELECT jsonb_object_keys(table.column) as a FROM "table"

这引发了一个错误:

cannot call jsonb_object_keys on a scalar

所以,检查列类型(我创建的,所以我知道它是jsonb,但无论如何)

SELECT  pg_typeof(column) as a FROM "table" ORDER BY "table"."id" ASC LIMIT 1

这正确地给了我“jsonb”的结果.

列中的值类似于{“key_1”:“纽约”,“key_2”:“键值”,“key_3”:“美国”}

所以,我真的很困惑这里实际发生了什么,为什么它将我的json数据称为标量?它实际意味着什么以及如何解决这个问题?

在这方面的任何帮助将非常有帮助.

PS:我正在使用rails,将此作为问题的一般问题发布.任何特定于轨道的解决方案也可以.

解决方法

所以问题结果是只有SQL而不是SQL.

正如我所提到的,我使用rails(5.1),我使用了默认值'{}’作为jsonb列.我通过在表的模型中定义它来为列使用双向串行器.

删除此序列化程序并将默认值调整为{}实际上解决了问题.

我认为我的序列化程序正在对值进行操作,但仍然在数据库中,它具有正如我在问题中提到的正确值.

我仍然没有100%清楚问题是什么.但无论如何它已经解决了.如果有人能够对这个问题究竟是什么有所了解,那就太棒了.

希望这可以帮助某人.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读