Postgresql 9.3betaにアップグレードしました。json_eachまたはjson_each_text関数を json 列に適用すると、結果は列名が'key'および'value'の行のセットになります。
次に例を示します。
名前の付いたテーブルがcustomers
あり、education
列のタイプはjson
Customers テーブルは次のとおりです。
----------------------------------------------------------------------
| id | first_name | last_name | education |
---- ------------ ----------- ----------------------------------------
| 1 | Harold | Finch | {\"school\":\"KSU\",\"state\":\"KS\"} |
----------------------------------------------------------------------
| 2 | John | Reese | {\"school\":\"NYSU\",\"state\":\"NY\"} |
----------------------------------------------------------------------
クエリ
select * from customers, json_each_text(customers.education) where value = 'NYSU'
次の列名を持つ一連の行を返します
---------------------------------------------------------------------------------------
| id | first_name | last_name | education | key | value |
---- ------------ ----------- ---------------------------------------- -------- -------
| 2 | John | Reese | {\"school\":\"NYSU\",\"state\":\"NY\"} | school | NYSU |
---------------------------------------------------------------------------------------
関数はデフォルトでと列名json_each_text
を持つ行のセットを返すためです。key
value
ただし、やjson_each_text
などのカスタム列名を返したい:key1
key2
-----------------------------------------------------------------------------------------
| id | first_name | last_name | education | key1 | value1 |
---- ------------ ----------- ---------------------------------------- -------- ---------
| 2 | John | Reese | {\"school\":\"NYSU\",\"state\":\"NY\"} | school | NYSU |
-----------------------------------------------------------------------------------------
これらの関数を適用した後、 「key1」や「value1」などの異なる列名を取得する方法はありますか?