Pokud se snažíte vyhnout nezdokumentovanému reverse()
můžete použít funkci utl_raw.reverse()
funkce
místo toho s vhodnou konverzí az 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
Takže to nabývá původní hodnoty; pomocí utl_i18n.string_to_raw()
na tom; pak to předat utl_raw.reverse()
; pak předání výsledku zpět přes utl_i18n.raw_to_char()
.
Nejste si úplně jisti, jak se to vyrovná s vícebajtovými znaky nebo co byste s nimi stejně chtěli...
Nebo variace z diskuze @RahulTripathi, na kterou odkazuje , bez zpracování znakové sady:
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
Ale toto vlákno také poznamenává, že funguje pouze pro jednobajtové znaky.