我已经发现我需要使用 substr/instr 或 regex,但是通过阅读有关这些的文档,我无法完成......我在 Oracle 11.2 上。
所以这就是我所拥有的。字符串列表,如:
743H5-34L-56
123HD34-7L
12HSS-34R
23Z67-4R-C23
我需要的是第一个'-'之后的数字(长度1或2),直到出现'L'或'R'。
有人有什么建议吗?
regexp_replace(string, '^.*?-(\d+)[LR].*$', '\1')
另一个版本(没有花哨的外观:-):
with v_data as (
select '743H5-34L-56' val from dual
union all
select '123HD34-7L' val from dual
union all
select '12HSS-34R' val from dual
union all
select '23Z67-4R-C23' val from dual
)
select
val,
regexp_replace(val, '^[^-]+-(\d+)[LR].*', '\1')
from v_data
它匹配