如何展平一个 jsonb 数组并 return 它在 table 中?

How to flatten a jsonb array and return it in a table?

我尝试了各种方法来解决这个问题:

    qualif_id    |                                                                    qualif_assessment_formats
-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 QL0000000000007 |
 QL0000000000008 |
 QL0000000000009 |
 QL0000000000001 | [{"af_sum": 420, "af_branch": "BR0000000000005", "af_currency": "EUR", "af_app_deadline": "2023-04-22 12:00:00", "af_acquire_datetime": "2023-04-22 14:00:00"}]

对此:

    qualif_id    |   qualif_assessment_formats
-----------------+-------------------------------
 QL0000000000007 |
 QL0000000000008 |
 QL0000000000009 |
 QL0000000000001 | ["BR0000000000005"]

简单地说,在JavaScript中寻找flatMap函数的模拟。喜欢 Array.flatMap(x => x.af_branch).

我尝试了 jsonb_to_recordset 和 jsonb_populate_recordset,但如果没有 PostgreSQL 中的 REPEAT 函数,它似乎无法工作。有什么想法吗?

如果您使用的是 Postgres 12 或更高版本,您可以使用 JSON 路径函数:

select qualif_id,
       jsonb_path_query_array(qualif_assessment_formats, '$[*].af_branch')
from the_table;