SQL-Talker |
---|
Подозреваю, что это с помощью regexp-ов можно сделать. А я в них, по большому счету, не разбираюсь. |
можно и без них
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Real Application Testing options
SQL> with t0 as (select '123456790abcdefgh' s
2 ,'_00_00___00_' m
3 from dual)
4 ,t (lvl,s,m,r)
5 as (select 1 lvl, '123456790abcdefgh' s
6 , '_00_00___00_' m
7 ,cast(decode(substr(m,1,1),'_'
8 ,substr(s,1,1)) as varchar2(4000)) r
9 from t0
10 union all
11 select lvl+1, s ,m
12 ,r||decode(substr(m,lvl,1),'_'
13 ,substr(s,lvl,1)) r
14 from t
15 where lvl <= length(m)
16 )
17 select max(r) r from t
18 ;
R
----------------------------------------------------------------------------
114790c