【发布时间】:2013-04-09 08:48:04
【问题描述】:
我已经发现我需要使用 substr/instr 或 regex,但是通过阅读有关这些的文档,我无法完成... 我在 Oracle 11.2 上。
这就是我所拥有的。 字符串列表,如:
743H5-34L-56
123HD34-7L
12HSS-34R
23Z67-4R-C23
我需要的是第一个“-”之后的数字(长度 1 或 2),直到出现“L”或“R”。
有什么建议吗?
【问题讨论】:
我已经发现我需要使用 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
匹配
【讨论】: