从 Postgres 中的 JSONB 数据创建 NUMERIC 数组
Creating NUMERIC array from JSONB data in Postgres
我有一个 Postgres JSONB 数据,其中包含一个 NUMERIC 类型的数组。我想提取这个 ARRAY 并将其存储在 NUMERIC[] 类型的变量中。这是我的 JSONB 对象。
{
"userIds": [
101,102,103
],
"userRole": {
"id": "1",
"name": "Administrator"
}
}
我如何从这个 JSONB 对象中提取 userIds 并将它们存储在 NUMERIC[] 中,因为我必须迭代这个 NUMERIC[]?
非常感谢任何帮助。
一种方法是使用 jsonb_array_elements
提取 id,将它们解析为正确的数据类型并再次将它们聚合到一个数组中,例如:
SELECT array_agg(id) FROM (
SELECT
(jsonb_array_elements('{
"userIds": [101,102,103],
"userRole": {
"id": "1",
"name": "Administrator"
}
}'::jsonb->'userIds')::numeric)) j(id);
array_agg
---------------
{101,102,103}
(1 row)
如果您想将这些值作为结果集中的行进行迭代,请不要理会外部查询:
SELECT
jsonb_array_elements('{
"userIds": [101,102,103],
"userRole": {
"id": "1",
"name": "Administrator"
}}'::jsonb->'userIds')::numeric;
jsonb_array_elements
----------------------
101
102
103
(3 rows)
我有一个 Postgres JSONB 数据,其中包含一个 NUMERIC 类型的数组。我想提取这个 ARRAY 并将其存储在 NUMERIC[] 类型的变量中。这是我的 JSONB 对象。
{
"userIds": [
101,102,103
],
"userRole": {
"id": "1",
"name": "Administrator"
}
}
我如何从这个 JSONB 对象中提取 userIds 并将它们存储在 NUMERIC[] 中,因为我必须迭代这个 NUMERIC[]?
非常感谢任何帮助。
一种方法是使用 jsonb_array_elements
提取 id,将它们解析为正确的数据类型并再次将它们聚合到一个数组中,例如:
SELECT array_agg(id) FROM (
SELECT
(jsonb_array_elements('{
"userIds": [101,102,103],
"userRole": {
"id": "1",
"name": "Administrator"
}
}'::jsonb->'userIds')::numeric)) j(id);
array_agg
---------------
{101,102,103}
(1 row)
如果您想将这些值作为结果集中的行进行迭代,请不要理会外部查询:
SELECT
jsonb_array_elements('{
"userIds": [101,102,103],
"userRole": {
"id": "1",
"name": "Administrator"
}}'::jsonb->'userIds')::numeric;
jsonb_array_elements
----------------------
101
102
103
(3 rows)