W MariaDB, UPDATEXML() to wbudowana funkcja, która zastępuje pojedynczą część danego fragmentu znacznika XML nowym fragmentem XML, a następnie zwraca zaktualizowany XML.
Składnia
Składnia wygląda tak:
UPDATEXML(xml_target, xpath_expr, new_xml) Gdzie:
xml_targetto znacznik XML zawierający fragment XML, który chcesz zaktualizowaćxpath_exprto konkretny fragment XML, który chcesz zaktualizowaćnew_xmljest fragmentem XML, który chcesz zastąpićxpath-exprz
Przykład
Oto podstawowy przykład:
SELECT
UPDATEXML(
'<pet><name>Wag</name><type></type></pet>',
'/pet/type',
'<type>Dog</type>'
) AS Result; Wynik:
+---------------------------------------------+ | Result | +---------------------------------------------+ | <pet><name>Wag</name><type>Dog</type></pet> | +---------------------------------------------+
W tym przykładzie oryginalny znacznik XML ma pusty <type> element. Użyliśmy UPDATEXML() zaktualizować ten element, tak aby zawierał treść (Dog ).
Argumenty zerowe
Przekazywanie null dla dowolnego argumentu zwraca 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; Wynik:
+------+------+------+------+ | a | b | c | d | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
Brakujące argumenty
Wywołanie UPDATEXML() z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT UPDATEXML(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UPDATEXML'