2 查询和修改XML数据
从MySQL 5.1.5版本起,MySQL添加了对XML文档进行查询和修改的函数,分别是ExtractValue()和UpdateXML()。(详细语法见“MySQL6.0 Reference Manual 11.10 XML Functions")
2.1 ExtractValue(xml_frag, xpath_expr)
第一个参数:xml_frag为XML文档对象的名称
第二个参数:xpath_expr为XPath格式的表达式
作用:从目标XML中返回包含所查询值的字符串
示例3:查询person_table中所有人的姓名
mysql> select ExtractValue(info,'/person/name') from person_table;
+-----------------------------------+
| ExtractValue(info,'/person/name') |
+-----------------------------------+
| 张三 |
| 李四 |
+-----------------------------------+
2 rows in set (0.33 sec)
2.1 UpdateXML(xml_target, xpath_expr, new_xml)
第一个参数:xml_target为XML文档对象的名称
第二个参数:xpath_expr为XPath格式的字符串)
第三个参数:new_value为新值
作用:改变文档中符合条件的节点的值,
将xml_target中满足xpath_expr的数据替换成new_value
示例4:将姓名“张三”更改为“张三三”
mysql> select UpdateXML(info,'/person/name[self:text()="张三"]','张三三')
from person_table;
+-----------------------------------------------------------------------------
| UpdateXML(info,'/person/name[self:text()="张三"]','张三三') |
------------------------------------------------------------------------------
|
one> |
|
1893333 |
+-------------------------------------------------------------------------------
2 rows in set (0.00 sec)
和MySQL其他许多新功能都是通过函数加入的一样,MySQL添加了新函数以支持对XML数据的查询和修改。由于新函数支持XPath表达式,使得查询起来比较方便。但是眼下流行的对xml数据的xquery查询方式,似乎还没有官方支持。MySQL这种仅通过函数支持XML查询的做法在很多时候显得捉襟见肘,以致网络上有大量的第三方开发包/库被开发出来,以方便开发人员更好地在MySQL中查询XML数据。