MariaDB UPDATEXML() Function
In MariaDB, UPDATEXML() is a built-in function that replaces a specified portion of the original XML document with a new XML fragment.
MariaDB UPDATEXML() Syntax
Here is the syntax for the MariaDB UPDATEXML() function:
UPDATEXML(xml_doc, xpath_expr)
Parameters
xml_doc-
Required. A XML document to be updated. If you provide an invalid XML fragment, MariaDB will issue a warning:
Warning (Code 1525): Incorrect XML value: 'parse error at line 1 pos 11: unexpected END-OF-INPUT'. xpath_expr-
Required. An XPATH path expression to be updated. If this is an illegal XPATH value, MariaDB will report an error:
ERROR 1105 (HY000): XPATH syntax error: ')'. new_xml-
Required. New XML fragment. If this is an invalid XML fragment, MariaDB will report an error:
Warning (Code 1525): Incorrect XML value: 'parse error at line 1 pos 11: unexpected END-OF-INPUT'.
If you supply the wrong number of arguments, MariaDB will report an error: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UPDATEXML'.
Return value
The MariaDB UPDATEXML() function returns the updated XML document that replaced with the content new_xml specified by xpath_expr.
If the specified XPATH path does not exist in the original XML document, UPDATEXML() will return the original XML document.
If either argument is NULL, the UPDATEXML() function will return NULL:
MariaDB UPDATEXML() Examples
Here first define an XML fragment for demonstration:
SET @xml = '<user>
<id>123456789</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>';
Basic example
To update the user with the new id 987654321, use the following statement:
SELECT
UPDATEXML(@xml, '/user/id', '<id>987654321</id>');
Output:
<user>
<id>987654321</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>You can update a node to anything what you want:
SELECT
UPDATEXML(@xml, '/user/id', '<any>what</any>');
Output:
<user>
<any>what</any>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>path does not exist
If the specified XPATH path does not exist in the original XML document, UPDATEXML() will return the original XML document.
SELECT
UPDATEXML(@xml, '/user/nothing', '<any>what</any>');
Output:
<user>
<id>123456789</id>
<name>Alice</name>
<age>15</age>
<hobbies>Piano<hobby>Football</hobby></hobbies>
</user>Conclusion
In MariaDB, UPDATEXML() is a built-in function that replaces a specified portion of the original XML document with a new XML fragment.