В MariaDB, UPDATEXML()
е вградена функция, която замества единична част от даден фрагмент от XML маркиране с нов XML фрагмент, след което връща актуализирания XML.
Синтаксис
Синтаксисът е така:
UPDATEXML(xml_target, xpath_expr, new_xml)
Къде:
xml_target
е XML маркирането, което съдържа XML фрагмента, който искате да актуализиратеxpath_expr
е конкретният XML фрагмент, който искате да актуализиратеnew_xml
е XML фрагментът, който искате да заменитеxpath-expr
с
Пример
Ето един основен пример:
SELECT
UPDATEXML(
'<pet><name>Wag</name><type></type></pet>',
'/pet/type',
'<type>Dog</type>'
) AS Result;
Резултат:
+---------------------------------------------+ | Result | +---------------------------------------------+ | <pet><name>Wag</name><type>Dog</type></pet> | +---------------------------------------------+
В този пример оригиналната XML маркировка има празен <type>
елемент. Използвахме UPDATEXML()
за да актуализирате този елемент, така че да съдържа съдържание (Dog
).
Нулеви аргументи
Предаването на null
за всеки аргумент връща null
:
SELECT
UPDATEXML('<pet></pet>', '/pet', null) AS a,
UPDATEXML(null, '/pet', '<friend></friend>') AS b,
UPDATEXML('<pet></pet>', null, '<friend></friend>') AS c,
UPDATEXML(null, null, null) AS d;
Резултат:
+------+------+------+------+ | a | b | c | d | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
Липсващи аргументи
Извикване на UPDATEXML()
с грешен брой аргументи или без подаване на аргументи води до грешка:
SELECT UPDATEXML();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UPDATEXML'