2017-11-10 144 views
1

我正在運行PostgreSQL 9.3。我有一個名爲「model」的列「json」(而不是 jsonb)。 「模型」列的內容如下所示:在PostgreSQL中查詢針對JSON列的數組遏制9.3

{ "section": { "colors": ["red", "blue", "green"] } }

是否可以查詢,其中包含model -> section -> colors「藍色」行?

回答

1

9.3中沒有json比較運算符。您可以調用函數json_array_elements()並將函數的結果轉換爲textDistinct on中情況下使用的JSON數組包含重複元件:

select distinct on (id) t.* 
from my_table t, 
json_array_elements(model->'section'->'colors') 
where value::text = '"blue"'; 

SqlFiddle

+0

這是正確的答案。我最終遷移到9.4版。 – tambler