【发布时间】:2015-11-28 07:58:36
【问题描述】:
Oracle Doc 中没有后向表达式的例子,所以我尝试使用 Java 语法,
这是我的查询应该在TOP之后得到任何数字
select regexp_substr('TIPTOP4152','(?<=TOP)\d+') sub from dual
但是什么都不能显示!
【问题讨论】:
Oracle Doc 中没有后向表达式的例子,所以我尝试使用 Java 语法,
这是我的查询应该在TOP之后得到任何数字
select regexp_substr('TIPTOP4152','(?<=TOP)\d+') sub from dual
但是什么都不能显示!
【问题讨论】:
我不确定Oracle 是否支持lookbehind。相反,您应该可以使用 regexp_replace
REGEXP_REPLACE('TIPTOP4152', '.*TOP(\d+)', '\1')
【讨论】:
TIPTOP4152.csv => 4152.csv
为了争论,REGEXP_SUBSTR 也可以:
SQL> select regexp_substr('TIPTOP4152', 'TOP(\d+)', 1, 1, NULL, 1) nbr
from dual;
NBR
----
4152
SQL>
【讨论】: