Se você está tentando evitar o
reverse()
não documentado você pode usar o utl_raw.reverse()
função
em vez disso, com conversão apropriada também e de 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
Então isso está tomando um valor original; fazendo
utl_i18n.string_to_raw()
naquilo; em seguida, passando isso para utl_raw.reverse()
; em seguida, passando o resultado de volta através de utl_i18n.raw_to_char()
. Não tenho certeza de como isso vai lidar com caracteres multibyte, ou o que você gostaria que acontecesse com eles de qualquer maneira ...
Ou uma variação da a discussão que @RahulTripathi vinculou , sem a manipulação do conjunto de caracteres:
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
Mas esse segmento também observa que só funciona para caracteres de byte único.