简体   繁体   English

如何将PostgreSQL中的jsonb键用作行值?

[英]How to use the key of jsonb in postgresql as a row value?

I have a table like this: 我有一张这样的桌子:

id (serial) | data (jsonb)
1           | {"a": 1, "b": 2}
2           | {"a": 3, "b": 1}

how to convert it to this table: 如何将其转换为该表:

id | dataKey | dataValue
1  | a       | 1             # {"a": 1} 
1  | b       | 2             # {"b": 2}
2  | a       | 3             # {"a": 3}
2  | b       | 1             # {"b": 1}

ps. PS。 character after # is comment #后的字符为注释

Use jsonb_each(). 使用jsonb_each().

with my_table(id, data) as (
values
(1, '{"a": 1, "b": 2}'::jsonb),
(2, '{"a": 3, "b": 1}')
)

select id, key, value
from my_table,
jsonb_each(data)

 id | key | value 
----+-----+-------
  1 | a   | 1
  1 | b   | 2
  2 | a   | 3
  2 | b   | 1
(4 rows)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM