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_target
to znacznik XML zawierający fragment XML, który chcesz zaktualizowaćxpath_expr
to konkretny fragment XML, który chcesz zaktualizowaćnew_xml
jest fragmentem XML, który chcesz zastąpićxpath-expr
z
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'