| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 
 | with sr as
(
select 'A123B456C79D' as word
  from dual
)
  ,  ct as
(
    select word,
           level as pos,
           substr(word, level, 1) as lettre,
           case
             when ascii(substr(word, level, 1)) between 65 and 90
             then to_char(ascii(substr(word, level, 1))-55)
             else substr(word, level, 1)
           end as new_letter
      from sr
connect by level <= length(word)
)
  select word,
         replace(replace(XMLAgg(XMLElement("x", new_letter) ORDER BY pos ASC), '<x>', ''), '</x>', '') AS new_word
    from ct
group by word;
 
WORD		NEW_WORD
A123B456C79D	1012311456127913 | 
Partager