这与此MySQL 更新 XML 属性有些相关,但这次我想更新节点值。我在 marcxml 列中有以下 XMLfragment:
<leader>00227nz a2200109n 4500</leader>
<controlfield tag="001">1</controlfield>
...
<controlfield tag="005">20091210091717.0</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 作为主键(但我想这无关紧要)并且它具有存储 xml 的 marcxml 列。查询给了我“0 行受影响”。所以它似乎不起作用。
在此先感谢和欢呼!