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"]','<name>updatename</name>')
7.使用update语句更新数据库内容。
update testtableset testxml= updatexml(testxml,'/student/class/name[self:text()="zhangsan"]','<name>updatename</name>')
注意事项
使用updatexml我们只是改变了查出字段的内容,并没有更新数据库,如果你需要更新数据库,需要用update语句更新
以上就是mysql数据库查询操作xml的经验分享的详细内容。