如何展平一个 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;
我尝试了各种方法来解决这个问题:
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;