Oracle
 sql >> база данни >  >> RDS >> Oracle

Обръщане на низ Word по Word с помощта на SQL

XML-базирана версия, за да избегнете дефинирането на собствена функция; изисква 11g за 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() извършва токенизирането и присвоява номер на ред:

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() след това го съберете обратно в обратен ред.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разберете към кое тримесечие принадлежи датата в Oracle

  2. Защо PL/SQL не зачита привилегиите, предоставени от ролите?

  3. Как да поръчате по име на месец в PostgreSQL или Oracle

  4. Използване на Oracle JDeveloper 12c с Oracle Database 12c на Oracle Cloud Platform, част 3

  5. Как да премахнете „Избрани X редове“ в SQLcl &SQL*Plus (Oracle)