您可以利用空格按字母顺序早于字母和数字的事实:
with q as (select ' ABC ' as c1,' DEF' as c2 from dual
union all select 'ABC ', ' DEF' from dual
union all select ' DEF ', 'ABC ' from dual
union all select ' DEF', ' ABC ' from dual
union all select 'ABC ', ' DEF ' from dual
union all select ' DEF', 'ABC ' from dual
)
select c1, c2,
GREATEST(SUBSTR(c1, 1, 3), SUBSTR(c2, 1, 3)) ||
GREATEST(SUBSTR(c1, 4, 3), SUBSTR(c2, 4, 3)) ||
GREATEST(SUBSTR(c1, 7, 3), SUBSTR(c2, 7, 3)) mrg
from q;
C1 C2 MRG
--------- --------- ---------
ABC DEF ABCDEF
ABC DEF ABC DEF
DEF ABC ABCDEF
DEF ABC ABCDEF
ABC DEF ABCDEF
DEF ABC ABC DEF
6 rows selected
Run Code Online (Sandbox Code Playgroud)