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

Oracle数据库中提取指定字符间字符串的方法求助

Oracle提取固定模式字符串的SQL解决方案

针对你描述的字符串模式(任意内容 + 空格 + --> + 空格 + <目标字符串>),以下两种SQL方案可以精准提取<>之间的目标内容:

方法一:正则表达式匹配(简洁高效)

利用Oracle的REGEXP_SUBSTR函数,直接通过正则捕获目标内容:

-- 替换col_name为你的字段名,your_table为表名
SELECT REGEXP_SUBSTR(col_name, '--> <([^>]+)>', 1, 1, NULL, 1) AS target_content
FROM your_table;

代码说明:

  • 正则表达式'--> <([^>]+)>':精确匹配--> <前缀,然后用([^>]+)捕获所有非>的字符(即<>之间的内容);
  • 最后一个参数1表示提取正则中第一个捕获组(括号内的内容)。

测试示例:

SELECT REGEXP_SUBSTR('A CRN_MOB_H_001 a--> <AVLB>', '--> <([^>]+)>', 1, 1, NULL, 1) AS target_content
FROM dual;

执行结果:AVLB

方法二:字符串位置截取(无正则依赖)

如果场景对正则性能敏感,可通过INSTR定位关键位置,再用SUBSTR截取:

SELECT SUBSTR(
    col_name,
    INSTR(col_name, '--> <') + 5,  -- 跳过"--> <"共5个字符,定位到目标起始位
    INSTR(col_name, '>', INSTR(col_name, '--> <')) - (INSTR(col_name, '--> <') + 5)
) AS target_content
FROM your_table;

代码说明:

  • INSTR(col_name, '--> <')找到--> <的起始位置,加5后得到目标字符串的第一个字符位置;
  • INSTR(col_name, '>', ...)找到目标结尾>的位置,减去起始位得到目标长度,最终用SUBSTR截取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:10:36