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

如何通过SUBSTR和INSTR从文件名中提取primary/secondary字段

解决方案:用SUBSTR和INSTR提取目标字符串

没问题,我来帮你搞定这个需求!你之前的SQL是定位了最后的.来截取后缀,现在我们需要调整思路,定位_和.这两个分隔符,截取它们之间的内容就可以了。

核心思路

你的文件名格式是前缀_目标内容.log,所以我们需要:

  • 找到_的位置,然后向后偏移1位,作为截取的起始点
  • 找到.的位置,计算它和_位置的差值,得到需要截取的长度

实现代码

SELECT
    -- 提取name1中的primary
    SUBSTR(name1, INSTR(name1, '_') + 1, INSTR(name1, '.') - INSTR(name1, '_') - 1) AS target_segment1,
    -- 提取name2中的secondary
    SUBSTR(name2, INSTR(name2, '_') + 1, INSTR(name2, '.') - INSTR(name2, '_') - 1) AS target_segment2
FROM (
    SELECT 'abc_primary.log' AS name1, 'abc_secondary.log' AS name2 FROM dual
);

代码解释

我们拆解一下关键部分的作用:

  • INSTR(name1, '_'):返回下划线_在字符串中的索引位置(比如abc_primary.log中这个值是4)
  • INSTR(name1, '_') + 1:跳过下划线,定位到目标内容的第一个字符(位置5,对应p)
  • INSTR(name1, '.'):返回点.的索引位置(abc_primary.log中是12)
  • INSTR(name1, '.') - INSTR(name1, '_') - 1:计算要截取的字符长度,12-4-1=7,正好是primary的字符数

执行这段SQL后,你会得到两个结果列,分别是primary和secondary,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:31:07