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

Oracle表字段提取最后一个>>后的报表名称技术需求

Oracle提取路径中最后一个>>后的报表名称

针对你需要从报表路径列中提取最后一段报表名称的需求,这里有两种实用的Oracle SQL方案,都能完美匹配你的示例场景:

方法1:正则表达式(简洁直观)

Oracle的REGEXP_SUBSTR函数可以直接通过正则匹配捕获最后一个>>之后的内容,代码如下:

SELECT 
  REGEXP_SUBSTR(Report_Name, '>>\s*([^>]+)$', 1, 1, NULL, 1) AS Extracted_Report_Name
FROM your_table;

正则逻辑说明:

  • >>\s*:匹配>>符号以及后面可能存在的任意空白字符(比如示例里>>和报表名之间的空格)
  • ([^>]+)$:捕获从当前位置到字符串结尾的所有非>字符,确保只取最后一段内容
  • 最后一个参数1:指定返回第一个捕获组的内容(也就是我们要的报表名)

方法2:INSTR + SUBSTR(性能友好,无正则依赖)

如果你偏好更传统的字符串操作,也可以结合INSTR和SUBSTR实现需求:

SELECT 
  TRIM(SUBSTR(Report_Name, INSTR(Report_Name, '>>', -1) + 2)) AS Extracted_Report_Name
FROM your_table;

步骤拆解:

  1. INSTR(Report_Name, '>>', -1):从字符串末尾开始查找第一个>>的位置
  2. +2:跳过>>这两个字符,定位到报表名的起始位置
  3. TRIM():去除报表名前后可能存在的多余空格(比如示例中>>后的空格)

两种方法都能处理你的示例输入,返回预期的ReportABC、ReportXYZ和Report Last Year。如果需要兼容没有>>的异常情况,可以再加个CASE判断:

SELECT 
  CASE 
    WHEN INSTR(Report_Name, '>>') > 0 THEN TRIM(SUBSTR(Report_Name, INSTR(Report_Name, '>>', -1) + 2))
    ELSE Report_Name
  END AS Extracted_Report_Name
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:58:56