2015-07-20 92 views
0

也许它非常愚蠢,但我不能写一个简单的SELECT在postgreSQL中的语句。假设我有两列的表,一个是id和doc,它是一个json字段。在postgreSQL中选择一个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这说明什么鲍勃的数据是这样的:

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

每当我写某事,我把这样的错误:

ERROR: cannot extract element from a scalar 

我该怎么做?谢谢

+1

“某物”不是一个SQL查询。你有什么尝试?什么给你那个错误? –

回答

2

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

你正在寻找的实际经营者为->,例如

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

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

+0

谢谢@Sami,但成绩是一本真实的词典,为了简洁起见我减少了它。从my_table'编写'select my_table-> doc :: json - >'b'是否是真的? –

+0

如果它已经在json/jsonb列中,则只需要'SELECT doc - >'Bob'FROM my_table' –

+0

使用'SELECT doc - >'Bob'FROM my_table'时,上述错误再次上升 –