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 文档中指定的部分。