No MariaDB,
UPDATEXML()
é uma função interna que substitui uma única parte de um determinado fragmento de marcação XML por um novo fragmento XML e, em seguida, retorna o XML atualizado. Sintaxe
A sintaxe fica assim:
UPDATEXML(xml_target, xpath_expr, new_xml)
Onde:
xml_target
é a marcação XML que contém o fragmento XML que você deseja atualizarxpath_expr
é o fragmento XML específico que você deseja atualizarnew_xml
é o fragmento XML que você deseja substituirxpath-expr
com
Exemplo
Segue um exemplo básico:
SELECT
UPDATEXML(
'<pet><name>Wag</name><type></type></pet>',
'/pet/type',
'<type>Dog</type>'
) AS Result;
Resultado:
+---------------------------------------------+ | Result | +---------------------------------------------+ | <pet><name>Wag</name><type>Dog</type></pet> | +---------------------------------------------+
Neste exemplo, a marcação XML original tem um
<type>
vazio elemento. Usamos UPDATEXML()
para atualizar esse elemento, para que ele contenha conteúdo (Dog
). Argumentos nulos
Passando
null
para qualquer argumento retorna 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;
Resultado:
+------+------+------+------+ | a | b | c | d | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
Argumentos ausentes
Chamando
UPDATEXML()
com o número errado de argumentos ou sem passar nenhum argumento resulta em um erro:SELECT UPDATEXML();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UPDATEXML'