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

PostgreSQL中如何从指定字符串中提取id对应的数值

方案1:使用substring正则匹配(适配你当前的写法需求)

你可以直接利用PostgreSQL中substring支持正则捕获的特性,匹配固定前缀"id",后到第一个]之前的内容即可,完整代码如下:

with t(txt) as
(
 values
  ('[["+","created_at","20210713T08:30:16.590+02:00"],["+","default_zahlungsverbindung_id",null],["+","firmen_gruppe_id",null],["+","gueltig_bis",null],["+","hat_mahnsperre",false],["+","hat_zahlsperre",false],["+","heimatort",null],["+","id",188710],["+","ist_aktiv",true]]')
)
select 
    substring(txt from '"id",([^]]+)]') as id
from t;

正则逻辑说明:"id",匹配固定前缀,([^]]+)捕获所有非]的内容(即你需要的id数值),末尾的]匹配结束边界,substring会直接返回第一个捕获组的内容。

方案2:更稳妥的JSON解析方案(推荐)

你提供的字符串本身是标准JSON数组结构,用内置JSON函数解析容错性更高,不会因为特殊字符出现匹配误差,代码如下:

with t(txt) as
(
 values
  ('[["+","created_at","20210713T08:30:16.590+02:00"],["+","default_zahlungsverbindung_id",null],["+","firmen_gruppe_id",null],["+","gueltig_bis",null],["+","hat_mahnsperre",false],["+","hat_zahlsperre",false],["+","heimatort",null],["+","id",188710],["+","ist_aktiv",true]]')
)
select 
    elem->>2 as id
from t,
     json_array_elements(txt::json) elem
where elem->>1 = 'id';

逻辑说明:先将字符串转为JSON类型,拆分为外层数组的每个子元素,过滤出第二个值为id的子数组,取第三个值即为目标id。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:12:03