我有一个类似于字典的字符串:
{100:{1:500000,2:600000},200:{1:700000,2:800000},300:{1:900000,2:100000
请注意,路径级别始终是固定的,但键值对的数量不是固定的。
我想把它转换成这样的表:
column 1 | column 2 | column 3
--------------------------------
100 | 1 | 500000
100 | 2 | 600000
200 | 1 | 700000
200 | 2 | 800000
300 | 1 | 900000
300 | 2 | 1000000
我试着使用正则表达式(select regexp_split_to_table(string, '[{}:, ]+') from ...
)并获得数字行,但将这些行转换为表产生了另一个需要解决的问题。
1条答案
按热度按时间a64a0gku1#
我们可以使用
REGEXP_REPLACE
将类似字典的字符串转换为有效的JSON,然后在两个级别上应用jsonb_each
以获得预期的输出:结果:
Demo here