Как получить первый элемент по XPath в Oracle - PullRequest
8 голосов
/ 08 июля 2010

В моей базе данных Oracle у меня есть такие записи:

<ROOT>
  <Event>
    <Type>sldkfvjhkljh</Type>
    <ID>591252</ID>
  </Event>
  <Data>
    <File>
      <Name>1418688.pdf</Name>
      <URL>/591252/1418688.pdf</URL>
    </File>
    <File>
      <Name>1418688.xml</Name>
      <URL>/591252/1418688.xml</URL>
    </File>
  </Data>
</ROOT>

Мне нужно извлечь значение из первого тега <Name>. Если я попытаюсь:

Select xmltype(xml_data).extract('//Name[1]/text()').getStringVal() from MY_TABLE

Я получаю:

1418688.pdf1418688.xml

Почему это так и как я могу получить только 1418688.pdf?

Версия Oracle:

Oracle Database 10g Enterprise Edition Выпуск 10.2.0.4.0 - 64bi

1 Ответ

13 голосов
/ 08 июля 2010

Я думаю, что оба элемента Name являются # 1 в этом документе, потому что в их узлах они являются первыми. Попробуйте //File[1]/Name/text()

...