Я пытаюсь использовать представление для извлечения строки (значения) из большой строки XML, которая находится в одном столбце в таблице улья. Мне нужно получить соответствующее FOO_STRING_VALUE для COMPANY_ID, SALE_IND и CLOSING_IND.
<Message>
<Header>
<FOO_STRING>
<FOO_STRING_NAME>COMPANY_ID</FOO_STRING_NAME>
<FOO_STRING_VALUE>44-1235</FOO_STRING_VALUE>
</FOO_STRING>
<FOO_STRING>
<FOO_STRING_NAME>SALE_IND</FOO_STRING_NAME>
<FOO_STRING_VALUE>Y</FOO_STRING_VALUE>
</FOO_STRING>
<FOO_STRING>
<FOO_STRING_NAME>CLOSING_IND</FOO_STRING_NAME>
<FOO_STRING_VALUE>Y</FOO_STRING_VALUE>
</FOO_STRING>
</Header>
</Message>
Файл XML может содержать до 50 «FOO_STRINGS», и нет никакой гарантии, в каком порядке они будут, поэтому я не могу использовать XPATH, если у меня нет 50 вызовов xpath_string для каждого имени / Значение пары и сопоставить их позже. Я использую xpath вот так .....
xpath_string(xml_txt, '/Message/Header/FOO_STRING[1]/FOO_STRING_VALUE') AS String_Val_1
xpath_string(xml_txt, '/Message/Header/FOO_STRING[2]/FOO_STRING_VALUE') AS String_Val_2
xpath_string(xml_txt, '/Message/Header/FOO_STRING[3]/FOO_STRING_VALUE') AS String_Val_3
Однако, если порядок меняется, он не работает. Мне интересно, есть ли быстрый способ найти нужный FOO_STRING_NAME
и получить соответствующее значение, используя regexp_extract()
или каким-либо другим способом? Я не знаком с Regex, поэтому любая помощь или предложения будут полезны, спасибо за тонну