ここでは、REGEXP を使用しています。
SELECT LISTAGG(DECODE(o_str_level,NULL,srch_l.rs,o_str_level)) WITHIN GROUP (ORDER BY srch_l.ri) AS the_result
FROM
(
SELECT REGEXP_SUBSTR(t_str, '.', 1, LEVEL) rs
, REGEXP_INSTR (t_str, '.', 1, LEVEL) ri
FROM
(
SELECT 'ABCDEF TUVWXYZ' AS t_str FROM DUAL
) test_str
CONNECT BY LEVEL <= LENGTH(t_str)
) srch_l
LEFT JOIN
(
SELECT REGEXP_SUBSTR(r_str, '\w', 1, LEVEL) AS r_str_level
, REGEXP_SUBSTR(o_str, '\w', 1, LEVEL) AS o_str_level
FROM
(
SELECT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' r_str, 'ZYXWVUTSRQPONMLKJIHGFEDCBA' o_str FROM DUAL
)
CONNECT BY LEVEL <= 26
) apt
ON srch_l.rs = apt.r_str_level;
-- Result:
-- ZYXWVU GFEDCBA
TRANSLATE よりも簡単ですか?ほとんど...