2015-07-20 134 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'時,上述錯誤再次上升 –