MariaDB UPDATEXML() 函数使用指南
在 MariaDB 中,UPDATEXML() 是一个内置函数,它使用新的 XML 片段替换原 XML 文档中指定的部分。
MariaDB UPDATEXML() 语法
这里是 MariaDB UPDATEXML() 的语法:
UPDATEXML(xml_doc, xpath_expr)
参数
xml_doc- 必需的。一个被更新的字符串。
- 如果您提供了一个非法的 XML 片段,MariaDB 将给出一个警告:
Warning (Code 1525): Incorrect XML value: 'parse error at line 1 pos 11: unexpected END-OF-INPUT'。 xpath_expr- 必需的。需要更新的 XPATH 路径表达式。
- 如果这是一个非法的 XPATH 值,MariaDB 将报告一个错误:
ERROR 1105 (HY000): XPATH syntax error: ')'。 new_xml- 必需的。新的 XML 片段。
- 如果这是一个非法的 XML 片段,MariaDB 将报告一个错误:
Warning (Code 1525): Incorrect XML value: 'parse error at line 1 pos 11: unexpected END-OF-INPUT'。
如果您提供了错误数量的参数,MariaDB 将报告一个错误: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UPDATEXML'。
返回值
MariaDB UPDATEXML() 函数返回更新后的 XML 文档,它将通过 xpath_expr 指定的内容替换为 new_xml。
如果原 XML 文档中不存在指定的 XPATH 路径,UPDATEXML() 将返回原 xml 文档。
如果任意一个参数为 NULL, UPDATEXML() 函数将返回 NULL:
MariaDB UPDATEXML() 示例
这里先定义个 XML 片段以供演示:
SET @xml = '<user>
<id>123456789</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>';
基本示例
要将用户 id 更新为新的值 987654321,请使用下面的语句:
SELECT
UPDATEXML(@xml, '/user/id', '<id>987654321</id>');
输出:
<user>
<id>987654321</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>您可以将节点更新为任何内容:
SELECT
UPDATEXML(@xml, '/user/id', '<any>what</any>');
输出:
<user>
<any>what</any>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>路径不存在
如果原 XML 文档中不存在指定的 XPATH 路径,UPDATEXML() 将返回原 xml 文档。
SELECT
UPDATEXML(@xml, '/user/nothing', '<any>what</any>');
输出:
<user>
<id>123456789</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>结论
在 MariaDB 中,UPDATEXML() 是一个内置函数,它使用新的 XML 片段替换原 XML 文档中指定的部分。