Ако се опитвате да избегнете недокументирания reverse()
можете да използвате utl_raw.reverse()
функция
вместо това също с подходящо преобразуване и от 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
Така че това е вземане на първоначална стойност; извършване на utl_i18n.string_to_raw()
на това; след това предаване на това на utl_raw.reverse()
; след това предаване на резултата от това обратно през utl_i18n.raw_to_char()
.
Не съм напълно сигурен как това ще се справи с многобайтови знаци или какво бихте искали да се случи с тях...
Или вариант от дискусията @RahulTripathi, свързана към , без обработка на набора от символи:
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
Но тази нишка също отбелязва, че работи само за еднобайтови знаци.