【发布时间】:2017-07-10 10:31:18
【问题描述】:
我正在尝试在 Postgres 中使用 jsonb。这里有很多问题,我想做的是:
SELECT table.column->>'key_1' as a FROM "table"
我尝试了 -> 以及一些括号组合,但我总是在 a 中得到 nil。
所以我尝试先获取所有密钥,看看它是否甚至可以识别 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”。
column 中的值类似于{"key_1":"New York","key_2":"Value of key","key_3":"United States"}
所以,我真的很困惑这里到底发生了什么,为什么它将我的 json 数据称为标量?它实际上意味着什么以及如何解决这个问题?
这方面的任何帮助都会非常有帮助。
PS:我正在使用 Rails,将此作为问题的一般问题发布。任何特定于 Rails 的解决方案也可以使用。
【问题讨论】:
标签: sql ruby-on-rails json postgresql jsonb