Hvis du forsøger at undgå den udokumenterede reverse()
funktionen kan du bruge utl_raw.reverse()
funktion
i stedet også med passende konvertering og fra RAW:
select utl_i18n.raw_to_char(
utl_raw.reverse(
utl_i18n.string_to_raw('Some string', 'AL32UTF8')), 'AL32UTF8')
from dual;
UTL_I18N.RAW_TO_CHAR(UTL_RAW.REVERSE(UTL_I18N.STRING_TO_RAW('SOMESTRING','AL32UT
--------------------------------------------------------------------------------
gnirts emoS
Så det er at tage en original værdi; laver utl_i18n.string_to_raw()
på det; derefter sende det til utl_raw.reverse()
; derefter sende resultatet af det tilbage gennem utl_i18n.raw_to_char()
.
Ikke helt sikker på, hvordan det vil klare multibyte-tegn, eller hvad du alligevel ønsker, der skal ske med dem...
Eller en variation fra diskussionen @RahulTripathi linkede til uden tegnsæthåndtering:
select utl_raw.cast_to_varchar2(utl_raw.reverse(utl_raw.cast_to_raw('Some string')))
from dual;
UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.REVERSE(UTL_RAW.CAST_TO_RAW('SOMESTRING')))
--------------------------------------------------------------------------------
gnirts emoS
Men den tråd bemærker også, at den kun virker for enkeltbyte-tegn.