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

PostgreSQL中按指定连字符位置截取子串的实现方法

PostgreSQL提取指定分隔区间内的字符串

针对你的需求,这里提供两种实用的实现方式:

方法一:利用数组操作

通过将字符串按-分割为数组,再截取目标区间的元素重新拼接:

SELECT array_to_string(
    string_to_array(col, '-')[4:array_length(string_to_array(col, '-'), 1)-1],
    '-'
) FROM your_table LIMIT 1;

逻辑说明:

  • string_to_array(col, '-'):将目标列的字符串按-分割成数组
  • [4:array_length(...) -1]:数组索引从1开始,4对应第三个-后的第一个元素;array_length(...) -1对应倒数第二个-前的最后一个元素(数组长度减1排除最后一个元素)
  • array_to_string(..., '-'):将截取的数组元素用-拼接回字符串

方法二:使用正则表达式匹配

通过正则直接捕获目标区间的内容:

SELECT (regexp_match(col, '^[^-]+-[^-]+-[^-]+-(.*)-[^-]+-[^-]+$'))[1] FROM your_table LIMIT 1;

逻辑说明:

  • ^[^-]+-[^-]+-[^-]+-:匹配开头三个-分隔的片段
  • (.*):捕获第三个-后到倒数第二个-前的所有内容
  • -[^-]+-[^-]+$:匹配倒数两个-分隔的结尾片段
  • regexp_match(...)返回捕获组数组,[1]取第一个捕获的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:43:14