【发布时间】:2016-03-14 08:19:01
【问题描述】:
我想从 https-address 中提取两个字符串集。我正在使用 Oracle 11g,这是我的数据和我的解决方案:
with mcte as (
select 'https://id.adsf.fi/dfad2/services/org/Organizations/9884752-6/2542595-3/Corlsdf-asdf/Corlsdf/MOB50202282' as addr from dual
union all
select 'https://id.asdf.fi/dfad2/services/org/Organizations/2435213-2/Corlsdf-asdf/Corlsdf/KVY239229' as addr from dual
union all
select 'https://id.asdf.fi/dfad2/services/org/Organizations/6356334-0' as addr from dual
union all
select 'https://id.asdf.fi/dfad2/services/org/Organizations/6356334-0/6356324-0' as addr from dual
union all
select 'https://id.asdf.fi/dfad2/services/org/Organizations/6356334-0/6356324-0/' as addr from dual
)
select addr,
REGEXP_SUBSTR(addr, '(Organizations\/)(\d+)', 1, 1, null, 2) AS num1,
REGEXP_SUBSTR(addr, '(Organizations\/)(\d+)', 1, 1, null, 3) AS num2
from mcte
;
这不会产生正确的集合,对于 NUM1 和 NUM2 应该是这样的
+----------------------------------------------------------------------------------------------------------+-----------+-----------+
| id | num1 | num2 |
+----------------------------------------------------------------------------------------------------------+-----------+-----------+
| https://id.adsf.fi/dfad2/services/org/Organizations/9884752-6/2542595-3/Corlsdf-asdf/Corlsdf/MOB50202282 | 9884752-6 | 2542595-3 |
| https://id.asdf.fi/dfad2/services/org/Organizations/2435213-2/Corlsdf-asdf/Corlsdf/KVY239229 | 2435213-2 | NULL |
| https://id.asdf.fi/dfad2/services/org/Organizations/6356334-0 | 6356334-0 | NULL |
| https://id.asdf.fi/dfad2/services/org/Organizations/6356334-0/6356324-0 | 6356334-0 | 6356324-0 |
| https://id.asdf.fi/dfad2/services/org/Organizations/6356334-0/6356324-0/ | 6356334-0 | 6356324-0 |
+----------------------------------------------------------------------------------------------------------+-----------+-----------+
我怎样才能做到这一点?
【问题讨论】:
标签: sql regex oracle oracle11g