mysql裡面有內建的操作xml的函數。分別是ExtractValue()和UpdateXML()函數。
語法:
EXTRACTVALUE (fiedname, XPathstring);
第一個參數:fiedname是String格式,為表格中的欄位名稱第二個參數:XPathstring (Xpath格式的字串) ,如果不了解Xpath語法,可以在網路上找到教程。作用:從目標XML傳回包含所查詢值的字串
UPDATEXML (fiedname, XPathstring, new_value);第一個參數:fiedname是String格式,為表中的欄位名稱第二個參數: XPathstring (Xpath格式的字串)
第三個參數:new_value,String格式,取代查找到的符合條件的資料作用:改變文件中符合條件的節點的值
相關mysql影片教學推薦:《mysql教學》
#1.首先我們建立一個測試的表。
CREATE TABLE `testtable` ( `testxml` text ) ENGINE=InnoDB DEFAULT CHARSET=latin1
2.然後為測試表新增一筆記錄。記錄為xml格式。
3.我們先使用EXTRACTVALUE函數查出名字為張三節點內容。可以在下面的輸出框看見我們找到的張三節點內容,xpath格式如下
extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'
4.現在我們有查詢class節點下所有name節點的值。
extractvalue(testxml,'/Student/Class/Name'
5.接下來我們用updatexml函數來改變xml的節點內容。
extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'), Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','updatename') ,把zhangsan节点内容换为updatename。
6.從上面的結果看到xml結構在我們使用updatexml後,少了一個name節點。我們只需要替換時把更新值加上節點即可。
extractvalue(testxml,'/Student/Class/Name[self:text()="zhangsan"]'), Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','updatename ')
7.使用Update語句更新資料庫內容。
UPDATE testtableSET testxml= Updatexml(testxml,'/Student/Class/Name[self:text()="zhangsan"]','<Name>updatename</Name>')
注意事項
使用UpdateXml我們只是改變了查出欄位的內容,並沒有更新資料庫,如果你需要更新資料庫,需要用update語句更新
以上是MySQL資料庫查詢操作XML的經驗分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!