在數據加載中,似乎有些XML屬性映射不正確,現在我正在嘗試更正此問題,但是我正在努力處理MySQL對此XML列的處理。用於更新XML屬性的MySQL
我想糾正所有出現的字段(屬性'tag =「520」')與子字段(屬性'code =「3」')的XML屬性(非值)。下面的查詢返回0行受影響,找到1行。任何線索如何實現這一目標。包括爲清楚起見
UPDATE biblioitems
SET marcxml = UpdateXML(marcxml,'datafield[@tag="520"]/subfield[@code="3"]',
'datafield[@tag="520"][@ind1="3"]/subfield[@code="a"]')
WHERE biblionumber = '220405';
XML片段:
最初的片段
<datafield tag="300" ind1=" " ind2=" ">
<subfield code="f">article</subfield>
</datafield>
<datafield tag="520" ind1=" " ind2=" ">
<subfield code="3">A description of something here</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2=" ">
<subfield code="a"></subfield>
</datafield>
我想作爲的結果是什麼:
<datafield tag="300" ind1=" " ind2=" ">
<subfield code="f">article</subfield>
</datafield>
<datafield tag="520" ind1="3" ind2=" ">
<subfield code="a">A description of something here</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2=" ">
<subfield code="a"></subfield>
</datafield>
無法工作,如何突出變化在代碼塊中(這是tag =「520」數據字段中的ind1屬性,它與子字段屬性相關)
乾杯,我明顯誤解了UpdateXML參數的基本原理。 – Ashimema
對於任何未來的讀者...我用於獲得結果的精確查詢所需物: 'UPDATE biblioitems_temp SET MARCXML =如updateXML(MARCXML, '//數據字段[@標籤= 「520」]', CONCAT(''', '', Extractvalue(marcxml,'// datafield [@ tag =」520「] /子場[@代碼= 「3」] '), ' ' ' ' ) ) WHERE extractValue一起(MARCXML,' //數據字段[@標籤= 「520」] /子場[@代碼= 「3」]')!='';' –
Ashimema