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

PostgreSQL中如何提取匹配authority_*模式的可变名称JSON键?

解决JSON对象中匹配带数字后缀键的PL/pgSQL查询问题

原代码里用srvc_req.form_data->>$$authority_*$$的写法无法实现通配符匹配,PostgreSQL的JSON操作符不支持这种模糊键名查询。要匹配authority_前缀加任意整数的键,需要通过JSON函数遍历键值对并结合正则筛选,以下是修改后的代码:

if json_array_length(tms_hlpr_usr_has_authority_fr_srvc_requests(usr_id_,org_id_)) > 0 then
    _extra_where = _extra_where || 
        ' and EXISTS (
            SELECT 1 
            FROM json_each_text(srvc_req.form_data) j(key, value)
            WHERE j.key ~ ''^authority_\d+$'' 
              AND j.value = ' || quote_literal(usr_id_) || '
        ) AND srvc_req.is_deleted IS NOT true ';
end if;

关键逻辑说明:

  • json_each_text(srvc_req.form_data):将JSON对象展开为键值对的行集合,每一行包含key(键名)和value(对应字符串值)两个字段。
  • j.key ~ ''^authority_\d+$'':使用正则表达式筛选键名,确保键名以authority_开头,后续为一个或多个数字(\d+匹配任意整数)。
  • EXISTS子查询:只要存在符合条件的键值对,就返回true,这样能高效判断目标ID是否存在于指定格式的键对应值中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:40:17