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

如何在Oracle SQL中使用regexp_substr按多字符分隔符拆分字符串?

Oracle SQL 按多字符分隔符正确拆分字符串

你的问题出在正则表达式的写法上:[^--->]+是否定字符集,它会把-和>这两个字符单独当作分隔符,所以a-b里的单个短横线被误判,导致拆分结果不符合预期。要实现按完整的--->分隔符拆分,需要调整正则逻辑,匹配整个分隔符而非单个字符。

正确的SQL语句

select  
    regexp_substr('a-b--->d--->e f', '(.*?)(--->|$)', 1, 1, null, 1) col1,
    regexp_substr('a-b--->d--->e f', '(.*?)(--->|$)', 1, 2, null, 1) col2,
    regexp_substr('a-b--->d--->e f', '(.*?)(--->|$)', 1, 3, null, 1) col3,
    regexp_substr('a-b--->d--->e f', '(.*?)(--->|$)', 1, 4, null, 1) col4
from dual

正则表达式说明

  • (.*?):非贪婪模式匹配任意字符(不含换行),直到遇到后续的分隔符或字符串结尾,避免过度匹配
  • (--->|$):指定完整的分隔符--->,或者匹配字符串结束位置(处理最后一段无分隔符的内容)
  • 最后一个参数1:表示返回第一个捕获组(.*?)的内容,也就是我们需要的拆分片段

执行结果

col1col2col3col4
a-bde f

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:31:09