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

如何提取href列中最后一个下划线与文件扩展名之间的内容

解法思路

你之前的写法仅实现了提取文件后缀的功能,没有完成核心的名称与版本号拆分逻辑,完整处理逻辑如下:

  1. 先去除href字段末尾的文件后缀(即最后一个.及之后的所有内容),得到无后缀的基础字符串
  2. 定位基础字符串中最后一个下划线_的位置,按这个位置拆分内容:
    • 如果下划线在基础字符串的末尾,直接去掉末尾下划线作为name,rev留空
    • 否则下划线前的内容为name,下划线后的内容为rev
参考SQL实现(PostgreSQL环境)
SELECT 
  href,
  -- 计算name字段
  CASE 
    WHEN STRPOS(REVERSE(base_str), '_') = 1 THEN LEFT(base_str, -1)
    ELSE LEFT(base_str, LENGTH(base_str) - STRPOS(REVERSE(base_str), '_'))
  END AS name,
  -- 计算rev字段
  CASE 
    WHEN STRPOS(REVERSE(base_str), '_') = 1 THEN ''
    ELSE RIGHT(base_str, STRPOS(REVERSE(base_str), '_') - 1)
  END AS rev
FROM (
  -- 先去除文件后缀得到基础字符串
  SELECT href, REGEXP_REPLACE(href, '\.[^.]+$', '') AS base_str
  FROM 你的表名
) AS temp
其他数据库适配

如果使用MySQL等其他数据库,仅需要调整对应函数名即可:

  • 将LENGTH替换为CHAR_LENGTH/LENGTH
  • 不支持REGEXP_REPLACE的场景下,可以用你之前的反向拆分逻辑替换基础字符串计算语句:
    REVERSE(SUBSTRING(REVERSE(href), LOCATE('.', REVERSE(href)) + 1)) AS base_str
    

所有逻辑完全匹配你给出的示例数据,可直接测试使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:54:04