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

Odwróć ciąg słowo po słowie za pomocą SQL

wersja oparta na XML, aby uniknąć definiowania własnej funkcji; wymaga 11g dla listagg() :

select listagg(word, ' ') within group (order by rn desc) as reversed
from (
  select word, rownum as rn
  from xmltable('for $i in ora:tokenize($STR, " ") return $i'
    passing 'Hello World! I Love StackOverflow' as str
    columns word varchar2(4000) path '.'
  )
);

REVERSED                               
----------------------------------------
StackOverflow Love I World! Hello        

XMLTable() wykonuje tokenizację i przypisuje numer wiersza:

select rownum as rn, word
from xmltable('for $i in ora:tokenize($STR, " ") return $i'
  passing 'Hello World! I Love StackOverflow' as str
  columns word varchar2(4000) path '.'
);

        RN WORD               
---------- --------------------
         1 Hello                
         2 World!               
         3 I                    
         4 Love                 
         5 StackOverflow        

listagg() następnie składa je z powrotem w odwrotnej kolejności.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lekka przygoda z zakupami

  2. Architektura pakietu Oracle E-Business Suite w 12.2

  3. 4 sposoby formatowania liczby bez ułamków dziesiętnych w Oracle

  4. Wartości nie są wyświetlane z wiodącym zerem w Oracle

  5. Funkcja MOD() w Oracle