Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak odwrócić ciąg znaków w Oracle (11g) SQL bez użycia funkcji REVERSE()?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekazywanie parametrów ciągu do połączonych procedur Oracle Server z SQL Server

  2. Procedura składowana Oracle i niestandardowy typ danych

  3. Czy procedury wymagają oddzielnych praw dostępu do tabel?

  4. Oracle:Czy istnieje sposób na uzyskanie najnowszych błędów składni SQL?

  5. Jak rozpoznać, czy wartość nie jest liczbowa w Oracle?