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%清楚问题是什么.但无论如何它已经解决了.如果有人能够对这个问题究竟是什么有所了解,那就太棒了.
希望这可以帮助某人.
总结以上是内存溢出为你收集整理的PostgreSQL从jsonb中提取键,异常“无法在标量上调用jsonb_object_keys”全部内容,希望文章能够帮你解决PostgreSQL从jsonb中提取键,异常“无法在标量上调用jsonb_object_keys”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)