1 2 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