Я использую MYSQL с командой EXTRACTVALUE, и приведенный ниже запрос возвращает значение BLANK при использовании фильтра [@ attribute = "value"]. Почему? - PullRequest
0 голосов
/ 19 октября 2019

Вот мой пример xml:

<GS-Pay>
<index>
<year>2017</year>
<Step-One>28000</Step-One>
<Step-Two>45000</Step-Two>
</index>
<index>
<year>2018</year>
<Step-One>30000</Step-One>
<Step-Two/>
</index>
<index>
<year>2019</year>
<Step-One>50000</Step-One>
<Step-Two>60000</Step-Two>
</index>
<total> </total>
</GS-Pay>

Вот мой запрос

EXTRACTVALUE(@xml,'//GS-Pay//index//Step-One[@year="2017"]')

Вот результат:

BLANK

Вот что мне нужно:

28000

Редактировать:

Когда я запрашиваю

EXTRACTVALUE(@xml,'//worksheet//GS-Pay//index//Step-One')

Результаты показывают отлично,

28000 30000 50000

Мне просто нужна способностьотфильтруйте его по значению другого узла.

1 Ответ

0 голосов
/ 20 октября 2019

Это утверждение

SELECT EXTRACTVALUE('<GS-Pay>
<index>
<year>2017</year>
<Step-One>28000</Step-One>
<Step-Two>45000</Step-Two>
</index>
<index>
<year>2018</year>
<Step-One>30000</Step-One>
<Step-Two/>
</index>
<index>
<year>2019</year>
<Step-One>50000</Step-One>
<Step-Two>60000</Step-Two>
</index>
<total> </total>
</GS-Pay>','/GS-Pay/index[year[text()=2017]]/Step-One/text()') value;

Дает вам желаемое

value    
28000

Мне потребовалось некоторое время, потому что объясняется только простое извлечение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...