正则表达式在oracle中匹配字符串后返回数字

时间:2014-02-18 09:22:48

标签: sql regex oracle

我有一个问题:

select ITEM_ID from system_items where id=4020;

我想要一个正则表达式,它将上述查询作为输入并匹配模式"id="并返回4020

如果您有任何建议,请与我们联系,因为我一直在REGEXP_SUBSTR Oracle尝试使用,但无法获得。

2 个答案:

答案 0 :(得分:0)

这应该这样做

 /id=(\d+)/

id is literal match
() are used for making the capture groups
\d is more numbers 
+ ensures 1 or more

演示http://rubular.com/r/GBxfhID5hS

答案 1 :(得分:0)

REGEX_SUBSTR不允许像(?<=id=\s*)\d+这样的后卫,所以我怀疑你需要在两个操作中执行此操作。首先获取id=4020,然后删除id=

这样做的一种可能方式是:

REGEXP_SUBSTR(REGEXP_SUBSTR(a, 'id=\s*\d+'), '\d+')

SQLFiddle