sql >> Databasteknik >  >> RDS >> Oracle

Oracle Replace-funktion

Om du inte vill uppdatera den befintliga tabellen och bara vill välja data kan du använda den här lite mödosamma frågan.

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;

Jag har använt XMLTYPE för att separera de kommaseparerade talen till rader. Förenade sedan raderna med den andra tabellen för att få beskrivningen och använde slutligen LISTAGG-funktionen för att bilda en kommaseparerad sträng. Vet inte hur effektiv den här frågan är. Jag håller med Mark Bannisters kommentar.



  1. hitta orsaker till mysql dödläge

  2. Generera nästa ID enligt max-ID i databasen med Java

  3. MySQL-administratörssäkerhetskopior:Kompatibilitetsläge, vad gör det här?

  4. ORA-00907:höger parentes saknas