この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 行が影響を受けました」と表示されます。だからうまくいかないようです。
よろしくお願いします。