Jeśli próbujesz uniknąć nieudokumentowanej reverse()
można użyć funkcji utl_raw.reverse()
funkcja
zamiast tego, z odpowiednią konwersją i z 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
Więc to jest przyjmowanie oryginalnej wartości; robienie utl_i18n.string_to_raw()
Na tym; następnie przekazanie go do utl_raw.reverse()
; następnie przekazuje wynik tego z powrotem przez utl_i18n.raw_to_char()
.
Nie jestem do końca pewien, jak to poradzi sobie ze znakami wielobajtowymi, ani co i tak chciałbyś z nimi zrobić...
Lub odmiana dyskusja @RahulTripathi, do której prowadzi link , bez obsługi zestawu znaków:
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 ten wątek zauważa również, że działa tylko dla znaków jednobajtowych.