多语言展示
当前在线:315今日阅读:142今日分享:25

mysql数据库查询操作XML

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格式,替换查找到的符合条件的数据 作用:改变文档中符合条件的节点的值
工具/原料
1

mysql

2

sqlyog

方法/步骤
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']','updatename')

注意事项

使用UpdateXml我们只是改变了查出字段的内容,并没有更新数据库,如果你需要更新数据库,需要用update语句更新

推荐信息