You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:移除jsonb列ranges数组元素的unit键需求

PostgreSQL移除jsonb数组元素中的指定键(处理null场景)

要批量移除details列(jsonb类型)中ranges数组每个元素里areaRange下的unit键,同时兼容areaRange为null、unit为null或数组长度不固定的情况,可以用PostgreSQL的jsonb系列函数实现:

核心更新语句

假设你的表名为your_table,执行以下SQL即可完成更新:

UPDATE your_table
SET details = jsonb_set(
    details,
    '{ranges}',
    (
        SELECT jsonb_agg(
            jsonb_delete_path(range_elem, '{areaRange, unit}')
        )
        FROM jsonb_array_elements(details->'ranges') AS range_elem
    )
)
WHERE details->'ranges' IS NOT NULL;

语句说明

  • 拆分数组:jsonb_array_elements(details->'ranges') 将ranges数组拆分为单个元素,遍历处理每一项
  • 删除指定键:jsonb_delete_path(range_elem, '{areaRange, unit}') 精准删除每个元素中areaRange下的unit键——不管areaRange是null、unit是null还是字段不存在,该函数都能安全处理,不会抛出错误
  • 重组数组:jsonb_agg(...) 将处理后的单个元素重新聚合为数组
  • 替换字段:jsonb_set(...) 把原details中的ranges字段替换为处理后的新数组
  • 过滤条件:WHERE details->'ranges' IS NOT NULL 可选,仅更新存在ranges字段的行,避免无意义操作

验证效果(测试示例数据)

如果要先验证处理逻辑,可执行以下查询测试示例数据:

SELECT 
    jsonb_set(
        sample_data,
        '{ranges}',
        (
            SELECT jsonb_agg(
                jsonb_delete_path(range_elem, '{areaRange, unit}')
            )
            FROM jsonb_array_elements(sample_data->'ranges') AS range_elem
        )
    ) AS processed_data
FROM (
    SELECT '{
        "ranges": [
            {
                "otherField": "test",
                "areaRange": {
                    "unit": "SQUARE",
                    "min": 10
                }
            },
            {
                "areaRange": {
                    "unit": "SQUARE_2",
                    "range": {"start": 5}
                }
            },
            {
                "areaRange": {
                    "unit": null
                }
            },
            {
                "areaRange": null
            }
        ],
        "other": "data"
    }'::jsonb AS sample_data
) AS t;

执行后会返回处理后的jsonb数据,其中所有ranges元素的areaRange下均无unit键。

内容的提问来源于stack exchange,提问作者NeverSleeps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:02:31