sql >> Database >  >> RDS >> Oracle

Oracle Vervang functie

Als u de bestaande tabel niet wilt bijwerken en alleen de gegevens wilt selecteren, kunt u deze ietwat omslachtige query gebruiken.

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;

Ik heb het XMLTYPE gebruikt om de door komma's gescheiden getallen in rijen te scheiden. Voeg vervolgens de rijen toe met de tweede tabel om de beschrijving te krijgen en gebruikte uiteindelijk de LISTAGG-functie om een ​​door komma's gescheiden tekenreeks te vormen. Weet niet hoe efficiënt deze query is. Ik ben het eens met de opmerking van Mark Bannister.



  1. Jaar wijzigen in mysql-datum

  2. MySQL-fout:sleutelspecificatie zonder sleutellengte

  3. Hoe verander ik de labeltekst van de drukknop en voeg ik een nieuwe functionaliteit toe tijdens runtime? Oracle-formulieren

  4. PHP en Postgres:fouten opvangen?