sql >> Databáze >  >> RDS >> Oracle

Funkce Oracle Replace

Pokud nechcete aktualizovat stávající tabulku a chcete pouze vybrat data, můžete použít tento poněkud pracný dotaz.

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;

Použil jsem XMLTYPE k oddělení čísel oddělených čárkami na řádky. Poté se řádky spojily s druhou tabulkou, aby se získal popis, a nakonec se pomocí funkce LISTAGG vytvořil řetězec oddělený čárkami. Nevím, jak efektivní je tento dotaz. Souhlasím s komentářem Marka Bannistera.



  1. Jak získat číslo změny?

  2. C#/SQL:zálohování a obnova zkopírováním a nahrazením databázových souborů?

  3. Jak zabránit automatizovaným útokům AJAX

  4. Dotaz k nalezení průměrné vážené ceny