У меня есть вложенный XML-документ.Но в некоторых местах нет вложенности.Я пытаюсь получить всю информацию, чтобы вставить в таблицу.Но запрос не возвращает значение родительского тега, если нет вложенности (дочерний тег).Я хочу, чтобы нулевое значение возвращалось в месте дочернего тега со значением родительского тега, если нет вложенности.Ниже приведен код для создания данных в таблице
create table xmldata as
with xmldoc as (
select xmlType('
<detailedOutput>
<entity>
<entityLabel>Parent tag with child</entityLabel>
<entityName>P with C</entityName>
<entityType>P with C</entityType>
<fact>
<name>I am child 1</name>
</fact>
<fact>
<name>I am child 2</name>
</fact>
</entity>
<entity>
<entityLabel>Parent tag with no child</entityLabel>
<entityName>P with no C</entityName>
<entityType>P with no C</entityType>
</entity>
</detailedOutput>
') xml from dual
)
select xml from xmldoc
Код для выбора результата:
select
extractValue (value(e), '/entity/entityLabel') as "entityLabel",
extractValue (value(e), '/entity/entityName') as "entityName",
extractValue (value(e), '/entity/entityType') as "entityType",
extractValue (value(f), '/fact/name') as "factName"
from xmldata x,
table (xmlSequence(extract(xml, '/detailedOutput/entity'))) e,
table (xmlSequence(extract(value(e), '/entity/fact'))) f
Здесь я получаю следующий результат: результат без значения родительского тега
Здесь значение для поля entityLabel Родительский тег без дочернего элемента не выбран.Пожалуйста, помогите мне, как сократить упомянутый XML-документ, чтобы выбрать значение родительского тега с дочерним значением null, если дочерний тег отсутствует.