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

Преобразувайте поредица от числови стойности в текст в Oracle SQL Query

Ето един вариант. Прочетете коментарите в кода. Примерни данни в редове #1 - 13; заявката започва на ред #14.

SQL> with
  2  expl (id, name) as
  3    (select 1, 'car' from dual union all
  4     select 2, 'bus' from dual union all
  5     select 3, 'BB'  from dual union all
  6     select 4, 'SB'  from dual union all
  7     select 5, 'Ba'  from dual union all
  8     select 6, 'PA'  from dual union all
  9     select 7, 'HB'  from dual union all
 10     select 8, 'G'   from dual
 11    ),
 12  temp (col) as
 13    (select '1,4,7,8' from dual),
 14  -- split COL to rows
 15  spl as
 16    (select regexp_substr(col, '[^,]+', 1, level) val,
 17            level lvl
 18     from temp
 19     connect by level <= regexp_count(col, ',') + 1
 20    )
 21  -- join SPL with EXPL; aggregate the result
 22  select listagg(e.name, ',') within group (order by s.lvl) result
 23  from expl e join spl s on s.val = e.id;

RESULT
--------------------------------------------------------------------------------
car,SB,HB,G

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Идентифициране на съдържанието на ASH последователност в RAC

  2. SQL заявка за връщане на ред, дори ако не е намерен, с поне параметри

  3. Неща, които трябва да знаете, преди да научите Oracle

  4. Как мога да се свържа с база данни на Oracle като SYS, използвайки ADO низ за връзка?

  5. Ред на изпълнение на условията в SQL клауза „къде“.