【问题标题】:select a json record in postgreSQL在 postgreSQL 中选择一条 json 记录
【发布时间】:2015-10-09 17:34:23
【问题描述】:

也许它很傻,但我不能在 postgreSQL 中写一个简单的 SELECT 语句。假设我有两列的表,一列是 id 和 doc,它是一个 json 字段。

-----------------------
| id |      doc       |
-----------------------
| 1  | {"bob":{"grades":{"math":60, "physics":58, "art":72}}}
| 2  | {"bob":{"grades":{"math":69, "physics":98, "art":75}}}
| 3  | {"jack":{"grades":{"math":30, "physics":40}}}

我想写一个 SELECT 来显示 bob 的数据,如下所示:

-----------------------
{"grades":{"math":60, "physics":58, "art":72}}
{"grades":{"math":69, "physics":98, "art":75}}

每当我写某事时,我都会犯这样的错误:

ERROR:  cannot extract element from a scalar

我该怎么做?谢谢

【问题讨论】:

  • "sth" 不是 SQL 查询。你试过什么?是什么给了你这个错误?

标签: json postgresql select nosql


【解决方案1】:

首先,您的 JSON 格式不正确。你的意思可能是{"bob":{"grades":[60, 58, 72]}}

您要查找的实际运算符是->,例如

select '{"bob":{"grades":[60, 58, 72]}}'::jsonb->'bob';

{“等级”:[60, 58, 72]}

【讨论】:

  • 谢谢@Sami,但成绩是一本真正的字典,为了简洁起见,我将其简化了。写select my_table->doc::json->'b' from my_table是真的吗?
  • 如果已经在json/jsonb列,只需要SELECT doc->'Bob' FROM my_table
  • SELECT doc->'Bob' FROM my_table 再次出现上述错误
  • @ehsantoghian 请展示您的表格结构。列类型是 json/jsonb 还是只是文本?
  • 已解决。问题是由于我想存储它们时的 json 记录。示例记录保存为文本而不是 Json。谢谢@SamiKuhmonen
猜你喜欢
  • 2016-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多