这与此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
它似乎工作,我测试了另一个记录,我不知道它只是奇怪:更新auth_header SET marcxml = UpdateXML(marcxml,'//控制字段[@标记=“001”]',CONCAT('','10',' controlfield>'))WHERE Extractvalue(marcxml,'// controlfield [@ tag =“001”]')='169625'; –
schnydszch