prostgresql:使用regexp\u split\u to\u表拆分列

xe55xuns  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(391)

我在postgresql中有一列数据

data
[{'aaa': 3333, 'bbb': 'xxx'}, {'aaa': 44444, 'bbb': 'z'}]
[{'aaa': 11, 'bbb': 'zz'}, {'aaa': 555, 'bbb': 'yyy'}]

基本上我想提取部分后

'bbb':'

在括号之前。然后将它们从一列转到另一行。所以在这个例子中,我希望输出

data1
xxx
z
zz
yyy

我正在使用regexp\u split\u to\u table函数,但我不确定该如何编写正则表达式。我尝试下面的函数,但它会给我'aaa',括号和引号。

regexp_split_to_table(genres, '},')

提前谢谢!

7vhp5slm

7vhp5slm1#

您的字符串看起来确实像json数组(前提是您用双引号替换单引号),所以我建议在这里使用json函数。

select x.js ->> 'bbb' as genre
from mytable t
cross join lateral jsonb_array_elements(replace(t.genres, '''', '"')::jsonb) x(js)

db小提琴演示:

| genre |
| :---- |
| xxx   |
| z     |
| zz    |
| yyy   |

相关问题