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

Hvordan returnerer jeg en liste med værdier i stedet for en streng, når jeg forespørger i en oracle-database ved hjælp af XPath?

EXTRACT (og EXTRACTVALUE ) er forældede funktioner. Du skal bruge XMLTABLE i stedet:

with sample_data as (select xmltype('<film>
    <title>Godfather, The</title>
    <year>1972</year>
    <directors>
        <director>Francis Ford Coppola</director>
    </directors>
    <genres>
        <genre>Crime</genre>
        <genre>Drama</genre>
    </genres>
    <plot>Son of a mafia boss takes over when his father is critically wounded in a mob hit.</plot>
    <cast>
        <performer>
            <actor>Marlon Brando</actor>
            <role>Don Vito Corleone</role>
        </performer>
        <performer>
            <actor>Al Pacino</actor>
            <role>Michael Corleone</role>
        </performer>
        <performer>
            <actor>Diane Keaton</actor>
            <role>Kay Adams Corleone</role>
        </performer>
        <performer>
            <actor>Robert Duvall</actor>
            <role>Tom Hagen</role>
        </performer>
        <performer>
            <actor>James Caan</actor>
            <role>Sonny Corleone</role>
        </performer>
    </cast>
</film>') x from dual)
select x.*
from   sample_data sd,
       xmltable('/film[title="Godfather, The"]/cast/performer' passing sd.x
                columns actor varchar2(50) path '//actor',
                        role varchar2(50) path '//role') x;

ACTOR                                              ROLE                                              
-------------------------------------------------- --------------------------------------------------
Marlon Brando                                      Don Vito Corleone                                 
Al Pacino                                          Michael Corleone                                  
Diane Keaton                                       Kay Adams Corleone                                
Robert Duvall                                      Tom Hagen                                         
James Caan                                         Sonny Corleone  

(Jeg har inkluderet rollekolonnen kun for yderligere information; du ville bare fjerne denne kolonne fra kolonnelisten i XMLTABLE del, hvis du ikke behøver at se det.)




  1. Få resultater fra mine egne og venners indlæg

  2. Fejlkode 1111. Ugyldig brug af gruppefunktion

  3. Partsforholdsmønster. Sådan modelleres relationer

  4. Udfyld manglende rækker, når du samler over flere felter i Postgres