Это несколько связано с этим MySQL to update an XML attribute, но на этот раз я хочу обновить значение узла. У меня есть следующий XMLfragment, который находится в колонке marcxml:MySQL для обновления значения узла XML
<leader>00227nz a2200109n 4500</leader>
<controlfield tag="001">1</controlfield>
...
<controlfield tag="005">20091210091717.0</controlfield>
...
Я хочу обновить тег значение controlfield 001 таким образом, что она становится число, основанное на запросе. Так как это:
<leader>00227nz a2200109n 4500</leader>
<controlfield tag="001">10</controlfield>
...
<controlfield tag="005">20091210091717.0</controlfield>
...
У меня изначально следующий MySQL запрос:
UPDATE auth_header SET marcxml = UpdateXML(marcxml, '//controlfield[@tag="001"]', CONCAT('<controlfield tag="001">', '10', '</controlfield>')) WHERE Extractvalue(marcxml, '//controlfield[@tag="001"]') ='169625';
таблица является auth_header и он AUTHID в качестве первичного ключа (но я предполагаю, что это делает не важно), и она имеет marcxml где хранится xml. Запрос дает мне «0 строк, затронутых». так что кажется, что это не сработает.
Спасибо заранее и приветствую!
Итак ... это ваш запрос не работает, как написано, или ...? –
Это не работает, это дает мне «0 строк, затронутых». – schnydszch
Мне показалось, что это сработало, я проверил с другой записью, я не знаю, что это просто странно: UPDATE auth_header SET marcxml = UpdateXML (marcxml, '// controlfield [@ tag = "001"]', CONCAT (' ',' 10 ',' controlfield> ')) WHERE Extractvalue (marcxml,' // controlfield [@ tag = "001"] ') =' 169625 '; –
schnydszch