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

Функция Oracle Replace

Ако не искате да актуализирате съществуващата таблица и искате само да изберете данните, тогава можете да използвате тази донякъде трудоемка заявка.

http://sqlfiddle.com/#!4/22909/4

WITH changed_table AS
     (SELECT val1, EXTRACTVALUE (x.COLUMN_VALUE, 'e') val2new
        FROM (SELECT val1, val2 xml_str
                FROM table1),
             TABLE (XMLSEQUENCE (XMLTYPE (   '<e><e>'
                                          || REPLACE (xml_str, ',', '</e><e>')
                                          || '</e></e>'
                                         ).EXTRACT ('e/e')
                                )
                   ) x)
SELECT ct.val1, listagg(table2.val2,',') within group (order by table2.val2) val2
  FROM changed_table ct, table2 table2
 WHERE ct.val2new = table2.val1
group by ct.val1;

Използвах XMLTYPE, за да разделя числата, разделени със запетая, на редове. След това съедини редовете с втората таблица, за да получи описанието и накрая използва функцията 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. Клауза „In“ в SQL сървър с множество колони

  2. Как да разделим по месеци и да групираме месеци в тримесечие

  3. Как да премахнете невалидна връзка с база данни от пула

  4. Връщане на имена на колони на Oracle във формат table.column?

  5. Грешка в инструмента за мигриране на Worklight 6.2