sql >> Databasteknik >  >> RDS >> Oracle

hämta namn och värde från xmltype-attributet i oracle

Du var nästan där med ditt första försök. När du utvärderar XPath, när du är inne i attributlistan med /TableAConfig/@* , du behöver inte text() för att få värdet på attributet inuti det. Du är redan på attributnivån så använd bara en "prick" . för nuvarande nod skulle vara tillräckligt.

Så prova något sånt här -

SELECT XMLElement("TableAConfigList",
    (SELECT
        XMLAgg(
           XMLElement("TableAConfig",
                XMLAttributes(
                    tmp."attr_name" as "name",
                    tmp."attr_text" as "value"
                )
            )
        ) from XMLTable('/TableAConfig/@*'
            passing TableA.TableA_config
            columns
               "attr_name" varchar(30) path 'name()',
               "attr_text" varchar(30) path '.'
        ) tmp
    )
) from dual

Den enda skillnaden från ditt första försök är xpath för value attribut.



  1. SQL välj den n:e medlemmen i gruppen

  2. MySQL-sats till pivottabell utan att använda pivotfunktion eller en union

  3. Överför data mellan databaser med PostgreSQL

  4. Logstash INPUT MySQL