Wenn Sie versuchen, das undokumentierte reverse()
zu vermeiden Funktion könnten Sie die utl_raw.reverse()
Funktion
stattdessen auch mit entsprechender Konvertierung und von 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
Das nimmt also einen ursprünglichen Wert; tun utl_i18n.string_to_raw()
auf diesem; dann übergeben Sie das an utl_raw.reverse()
; dann das Ergebnis davon durch utl_i18n.raw_to_char()
zurückgeben .
Ich bin mir nicht ganz sicher, wie das mit Multibyte-Zeichen zurechtkommt, oder was mit denen passieren soll...
Oder eine Variation von der Diskussion, auf die @RahulTripathi verlinkt ist , ohne die Zeichensatzbehandlung:
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
Aber dieser Thread stellt auch fest, dass es nur für Single-Byte-Zeichen funktioniert.