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

Oracle Replace funktion

Hvis du ikke ønsker at opdatere den eksisterende tabel og kun ønsker at vælge dataene, kan du bruge denne noget besværlige forespørgsel.

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;

Jeg har brugt XMLTYPE til at adskille de kommaseparerede tal til rækker. Forenede derefter rækkerne med den anden tabel for at få beskrivelsen og brugte til sidst LISTAGG-funktionen til at danne en kommasepareret streng. Ved ikke hvor effektiv denne forespørgsel er. Jeg er enig i Mark Bannisters kommentar.



  1. Transponering og aggregering af Oracle-kolonnedata

  2. Tilføj Slet-knap til PHP-resultattabel

  3. Sådan får du rækkenummer i PostgreSQL

  4. Indsæt hvis det ikke findes, ellers returner id i postgresql