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

PostgreSQL中如何提取varchar类型字段字符串里UID=后的数字

PostgreSQL可以通过内置的正则匹配功能实现该需求,具体方案如下:

方法1:使用 substring() 配合正则捕获(最简洁)

substring 函数支持直接提取正则捕获组的内容,只需匹配 UID= 后的连续数字即可:

-- 单值测试示例
SELECT substring('My unique id [john3 UID=123]' FROM 'UID=(\d+)') AS extracted_uid;

上述语句执行后返回结果为 123,完全符合需求。

实际查询表数据的语法:

SELECT substring(你的字段名 FROM 'UID=(\d+)') AS uid
FROM 你的表名;

方法2:使用 regexp_match() 函数

如果需要处理更复杂的匹配场景,可以用 regexp_match 函数,它会返回匹配到的捕获组数组,取第一个元素即可:

-- 单值测试示例
SELECT (regexp_match('My unique id [jerry25 UID=98765]', 'UID=(\d+)'))[1] AS extracted_uid;

扩展用法

  1. 提取结果转为数值类型:如果需要直接得到数字类型的结果,追加类型强转即可
SELECT substring(你的字段名 FROM 'UID=(\d+)')::INTEGER AS uid
FROM 你的表名;
  1. 过滤无UID的行:如果需要排除不存在UID=的记录,追加WHERE条件即可
SELECT substring(你的字段名 FROM 'UID=(\d+)')::INTEGER AS uid
FROM 你的表名
WHERE 你的字段名 ~ 'UID=\d+';

正则说明:UID=(\d+) 中,\d+ 表示匹配1个及以上的数字,括号包裹的部分为捕获组,函数会直接返回捕获组内的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:54:03