2016-08-11 48 views
0

我有一個表「的產品」,其具有多列,這些列「規範」的是JSON和我有它這樣的數據:獲得從陣列上JSON數據類型postgres的某些元素

[ 
     { 
      "en":"Weight", 
      "ar":"الوزن", 
      "value":"100" 
     }, 
     { 
      "en":"Height", 
      "ar":"الارتفاع", 
      "value":"300" 
     } 
    ] 

我除了表格的剩餘字段之外,還需要從該字段中僅獲取「en,value」或「ar,value」。

+0

如果你是一個「經典的」關係數據庫管理系統(你不指定是否使用PostgreSQL的NoSQL擴展,我假設沒有)我看到的唯一解決方案是獲取該值並手動解析它們 –

+0

它好像你提到的那樣。我必須手動解析它。 –

回答

0

讓我們試試這個

select column_names, 
--all column names you can left "specifications" column 
(select string_agg(v,',') from 
(select '(' || (val->>'en')::text || ',' || (val->>'value')::text || ')' as v 
    --You can put whatever json key-value you want here 
from (select value as val from 
(select value from json_array_elements("specifications"))))) from "products" 

希望它爲你工作。

+0

你可以參考[JSON in PostgrSql](https://www.postgresql.org/docs/9.6/static/functions-json.html)瞭解更多詳情 – Paarth