Odczyt danych z tabeli typu XMLType

0

Witam, mam tabelę cv typu XMLType w bazie Oracle z takimi danymi:

<zbior>
  <cv>
    <dane_osobowe>
      <imie>Święty</imie>
      <nazwisko>Mikołaj</nazwisko>
      <adres>
        <ulica>Choinkowa 113</ulica>
        <miasto>Chmura ?niegowa</miasto>
      </adres>
      <telefon>nieznany</telefon>
      <data_urodzenia>1573</data_urodzenia>
    </dane_osobowe>
    <jezyki>
      <jezyk>
        <nazwa>Angielski</nazwa>
        <stopien>Doskonały</stopien>
      </jezyk>
      <jezyk>
        <nazwa>Niemiecki</nazwa>
        <stopien>Przeciętny</stopien>
      </jezyk>
      <jezyk>
        <nazwa>Rosyjski</nazwa>
        <stopien>Słaby</stopien>
      </jezyk>
    </jezyki>
    <szkolenia>Dziwaczne</szkolenia>
  </cv>
</zbior>

Dlaczego zapytanie:

select extract(value(c), '//cv[contains(jezyki/jezyk/nazwa, "Angielski")]') from cv c

zwraca poprawny wynik,

a zapytanie:

select extract(value(c), '//cv[contains(jezyki/jezyk/nazwa, "Niemiecki")]') from cv c

zwraca NULL?

0

Ma być chyba tak:
SELECT EXTRACT(VALUE(c), '//cv[contains(jezyki/jezyk/nazwa/text(), "Niemiecki")]') FROM cv c

0

Niestety powyższy sposób nie działa, dalej to samo.

0

Za płytko wszedłeś w strukturę, to powinno działać moim zdaniem:

SELECT EXTRACT(VALUE(c), '//cv/jezyki[contains(jezyk/nazwa, "Niemiecki")]') FROM cv c
0

Dalej to samo, nie rozumiem dlaczego dla pierwszego języka w strukturze jest OK, a dla kolejnych zwraca NULL.

0

A próbowałeś konstrukcji:

SELECT EXTRACT(VALUE(c), '/zbior/cv/jezyki/jezyk[ora:contains(nazwa,"Niemiecki")>0]', 'xmlns:ora="http://xmlns.oracle.com/xdb"') from cv c;

I ogólnie dokumentacji Oraclowej : http://docs.oracle.com/cd/B10501_01/appdev.920/a96620/xdb11sea.htm#1012537 ? :)

pozdr,
y.

1 użytkowników online, w tym zalogowanych: 0, gości: 1