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

PostgreSQL中如何从固定格式主键提取可变长度字母段?

在PostgreSQL中提取主键中的字母段

针对你描述的主键格式(如31DXS6070705.OUT),可以通过PostgreSQL的正则表达式函数快速提取中间的2-3个字母段,以下是两种常用实现方式:

方法1:使用substring函数(推荐)

substring支持通过正则捕获组直接提取目标内容,语法简洁:

-- 提取示例主键中的字母段
SELECT substring('31DXS6070705.OUT' FROM '^\d+([A-Za-z]{2,3})\d+') AS letter_segment;

执行后返回结果:DXS

测试2个字母的场景:

SELECT substring('45AB1234.TXT' FROM '^\d+([A-Za-z]{2,3})\d+') AS letter_segment;

返回结果:AB

方法2:使用regexp_match函数

该函数返回匹配结果的数组,取第一个元素即可得到目标字母段:

SELECT (regexp_match('31DXS6070705.OUT', '^\d+([A-Za-z]{2,3})\d+'))[1] AS letter_segment;

正则表达式说明

  • ^:定位到字符串开头
  • \d+:匹配开头的连续数字部分
  • ([A-Za-z]{2,3}):捕获2-3个大小写字母(这就是我们需要的目标段)
  • \d+:匹配字母段后的连续数字,确保提取的是数字之间的字母部分

额外处理:统一大小写

如果需要将提取的字母统一为大写或小写,可嵌套upper()/lower()函数:

SELECT upper(substring('31dXs6070705.OUT' FROM '^\d+([A-Za-z]{2,3})\d+')) AS letter_segment;

返回结果:DXS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:36:10