sql >> Database >  >> RDS >> Oracle

Een string in Oracle (11g) SQL omkeren zonder de functie REVERSE() te gebruiken

Als je de ongedocumenteerde reverse() . probeert te vermijden functie kunt u de utl_raw.reverse() functie in plaats daarvan, ook met de juiste conversie en van 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                                                                     

Dat is dus een originele waarde aannemen; utl_i18n.string_to_raw() . doen op dat; geef dat dan door aan utl_raw.reverse(); vervolgens het resultaat daarvan doorgeven via utl_i18n.raw_to_char() .

Ik weet niet helemaal zeker hoe dat zal omgaan met multibyte-tekens, of wat je daar sowieso mee wilt doen...

Of een variatie op de discussie waar @RahulTripathi naar verwijst , zonder de karaktersetbehandeling:

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                                                                     

Maar die thread merkt ook op dat het alleen werkt voor tekens van één byte.



  1. Wat is de juiste syntaxis voor partitionering in SQL?

  2. Is er een manier om alle database-informatie zoals wachtwoord, gebruikersnaam, enz. Te verbergen?

  3. Django formulier/database fout:waarde te lang voor type karakter variërend(4)

  4. Zeer langzaam opstarten van Spring Boot-toepassing