sql >> Database teknologi >  >> RDS >> Oracle

Omvendt streng ord for ord ved hjælp af SQL

XML-baseret version for at undgå at definere din egen funktion; kræver 11g for 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() udfører tokeniseringen og tildeler et rækkenummer:

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() sætter det derefter sammen igen i omvendt rækkefølge.



  1. Tilføj et jobtrin til et eksisterende SQL Server Agent-job (T-SQL)

  2. MySQL – Database Character Set Encoding and Collation Explained

  3. Eliminer og reducer overlappende datointervaller

  4. Erstat flere tegn i en streng i SQL Server (T-SQL)