MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

mysql里面有內(nèi)置的操作xml的函數(shù)。分別是ExtractValue()和UpdateXML()函數(shù)。

語法:

EXTRACTVALUE?(fiedname,?XPathstring);

第一個參數(shù):fiedname是String格式,為表中的字段名第二個參數(shù):XPathstring (Xpath格式的字符串) ,如果不了解Xpath語法,可以在網(wǎng)上查找教程。作用:從目標(biāo)XML中返回包含所查詢值的字符串

UPDATEXML (fiedname, XPathstring, new_value);第一個參數(shù):fiedname是String格式,為表中的字段名第二個參數(shù):XPathstring (Xpath格式的字符串)

第三個參數(shù):new_value,String格式,替換查找到的符合條件的數(shù)據(jù) 作用:改變文檔中符合條件的節(jié)點(diǎn)的值

相關(guān)mysql視頻教程推薦:《mysql教程

1.首先我們創(chuàng)建一個測試的表。

CREATE?TABLE?`testtable`?(???`testxml`?text?)?ENGINE=InnoDB?DEFAULT?CHARSET=latin1

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

2.然后為測試表添加一條記錄。記錄為xml格式。

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

3.我們首先使用EXTRACTVALUE函數(shù)查出名字為張三節(jié)點(diǎn)內(nèi)容。可以在下面的輸出框看見我們找到的張三節(jié)點(diǎn)內(nèi)容,xpath格式如下

extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

4.現(xiàn)在我們有查詢class節(jié)點(diǎn)下所有name節(jié)點(diǎn)的值。

?extractvalue(testxml,'/Student/Class/Name'

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

5.接下來我們用updatexml函數(shù)來改變xml的節(jié)點(diǎn)內(nèi)容。

extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'),?? Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','updatename') ,把zhangsan節(jié)點(diǎn)內(nèi)容換為updatename。

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

6.從上面的結(jié)果中看到xml結(jié)構(gòu)在我們使用updatexml后,少了一個name節(jié)點(diǎn)。我們只需要替換時把更新值加上節(jié)點(diǎn)即可。

extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'),?? Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','updatename')

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

7.使用Update語句更新數(shù)據(jù)庫內(nèi)容。

UPDATE?testtableSET?testxml=??Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','<name>updatename</name>')

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

MySQL數(shù)據(jù)庫查詢操作XML的經(jīng)驗(yàn)分享

注意事項(xiàng)

使用UpdateXml我們只是改變了查出字段的內(nèi)容,并沒有更新數(shù)據(jù)庫,如果你需要更新數(shù)據(jù)庫,需要用update語句更新

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享