Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да извадя всички числови последователности от низ с регулярен израз на Oracle?

Опитайте това:

with t(d) as (
  select '<efwewfsdf/>
<asdf>
<qwe>
<rej:aaa ns2=rnsjvnsvjrlntjnbsnbltdbk">64-0203-0875/4</rej:aaa>
<rej:bbb ns2=bmtbrbpnrtusrnbdbd k">06396</rej:bbb>
<rej:ccc ns2=vmkfbkmbkfmgkmfgkbgfk">4567650</rej:ccc>
<rej:ddd ns2=zxczxczczxczxczxk">402341198</rej:ddd>
<rej:eee ns2=asdasdasdazxck">723112</rej:eee>
<rej:eee ns2=adasdasdawawqweqwek">342253</rej:eee>
<rej:eee ns2=bgbgfnnhnhnhnhnhnk">656345</rej:eee>
<rej:fff ns2=ewretyrtyghnk">352</rej:fff>
<rej:ggg ns2="vzxczdvdbdfgs">asd.Gdsa</rej:ggg>
<rej:hhh ns2="zcsasdqwfwgerbyn">W1_22</rej:hhh>
</qwe>
</asdf>' from dual 
), t1(d) as (
select SUBSTR(d, REGEXP_INSTR(d, '<[A-Za-z]{3}:', 1, level), REGEXP_INSTR(d, '</rej:[A-Za-z]{3}>', 1, level) - REGEXP_INSTR(d, '<[A-Za-z]{3}:', 1, level))
  from t
connect by rownum < LENGTH(d) - LENGTH(REGEXP_REPLACE(d, ':[A-Za-z]{3}>', ''))
)
select REGEXP_REPLACE(d, '^<rej:.*">', '') ff from t1

FF
--------------
64-0203-0875/4
06396
4567650
402341198
723112
342253
656345
352
asd.Gdsa
W1_22



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извикам java клас от oracle trigger?

  2. компонент на скрипт липсва препратка към оракул

  3. Oracle:Най-бързият начин в PL/SQL да видите дали съществува стойност:списък, VARRAY или временна таблица

  4. SELECT * FROM TABLE (конвейерна функция):мога ли да съм сигурен в реда на редовете в резултата?

  5. Как да избягвате символите <,> и &към html обекти в Oracle PL/SQL