Zia*_*hal 6 sql postgresql json ruby-on-rails jsonb
我正在尝试使用 Postgres 中的 jsonb 解决问题。这里有很多问题,我想做的是:
SELECT table.column->>'key_1' as a FROM "table"
Run Code Online (Sandbox Code Playgroud)
我尝试使用 -> 以及一些括号组合,但我总是在 a.
所以我尝试先获取所有密钥,看看它是否甚至识别 jsonb 。
SELECT jsonb_object_keys(table.column) as a FROM "table"
Run Code Online (Sandbox Code Playgroud)
这引发了一个错误:
cannot call jsonb_object_keys on a scalar
Run Code Online (Sandbox Code Playgroud)
所以,要检查列类型(我创建的,所以我知道它是 jsonb,但无论如何)
SELECT pg_typeof(column) as a FROM "table" ORDER BY "table"."id" ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
这在结果中正确地给了我“jsonb”。
中的值column类似于{"key_1":"New York","key_2":"Value of key","key_3":"United States"}
所以,我真的很困惑这里到底发生了什么,为什么将我的 json 数据称为标量?它实际上意味着什么以及如何解决这个问题?
在这方面的任何帮助都将非常有帮助。
PS:我正在使用 rails,将此作为该问题的一般问题发布。任何 Rails 特定的解决方案也可以工作。
所以事实证明问题不仅仅是 SQL。
正如我提到的,我正在使用 Rails(5.1),我使用了'{}'jsonb 列的默认值。我通过在表的模型中定义列来使用双向序列化器。
删除这个序列化器并调整默认值才能{}真正解决问题。
我认为我的序列化程序对这些值做了一些处理,但是在数据库中,它仍然具有正确的值,就像我在问题中提到的那样。
我仍然不是 100% 清楚问题是什么。但无论如何都解决了。如果有人能够阐明问题到底是什么,那就太好了。
希望这可以帮助某人。
| 归档时间: |
|
| 查看次数: |
4408 次 |
| 最近记录: |