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

如何提取指定字符串与第N次出现分隔符之间的子串?

问题解决:提取指定字符串与后续分隔符间的子串

你的需求是从字符串中提取「固定前缀Abc-defg-hijkl-mno」和「该前缀后第一次出现的-」之间的子串,原代码无法得到正确结果,问题出在这两点:

  • instr(text, '-')只会匹配字符串里第一个-,而这个符号在固定前缀内部就存在,导致计算的截取长度完全错误;
  • substr的起始位置设为固定前缀的起始点,但我们需要从固定前缀结束之后的位置开始截取。

正确实现(以Oracle SQL为例)

可以分两步处理:先截取固定前缀之后的内容,再提取其中-之前的部分:

SELECT SUBSTR(
    -- 先截取固定前缀及后续空格之后的内容
    SUBSTR(text, INSTR(text, 'Abc-defg-hijkl-mno') + LENGTH('Abc-defg-hijkl-mno') + 1),
    1,
    -- 找到截取后内容里第一个'-'的位置,取其之前的部分
    INSTR(SUBSTR(text, INSTR(text, 'Abc-defg-hijkl-mno') + LENGTH('Abc-defg-hijkl-mno') + 1), '-') - 1
) AS target_substring
FROM your_table;

测试验证

输入:

Abc-defg-hijkl-mno pqr-1245
Abc-defg-hijkl-mno ab-8748

输出:

pqr
ab

内容的提问来源于stack exchange,提问作者Bhanu Shankar Buddi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:35:04