sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer UPDATEXML() i MariaDB

I MariaDB, UPDATEXML() er en indbygget funktion, der erstatter en enkelt del af et givet fragment af XML-markering med et nyt XML-fragment og derefter returnerer den opdaterede XML.

Syntaks

Syntaksen ser sådan ud:

UPDATEXML(xml_target, xpath_expr, new_xml)

Hvor:

  • xml_target er den XML-markering, der indeholder det XML-fragment, du vil opdatere
  • xpath_expr er det specifikke XML-fragment, som du vil opdatere
  • ny_xml er det XML-fragment, som du vil erstatte xpath-expr med

Eksempel

Her er et grundlæggende eksempel:

SELECT
    UPDATEXML(
        '<pet><name>Wag</name><type></type></pet>', 
        '/pet/type', 
        '<type>Dog</type>'
        ) AS Result;

Resultat:

+---------------------------------------------+
| Result                                      |
+---------------------------------------------+
| <pet><name>Wag</name><type>Dog</type></pet> |
+---------------------------------------------+

I dette eksempel har den originale XML-markup en tom element. Vi brugte UPDATEXML() at opdatere det element, så det indeholder indhold (Dog ).

Nul-argumenter

Sender null for ethvert argument returnerer 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;

Resultat:

+------+------+------+------+
| a    | b    | c    | d    |
+------+------+------+------+
| NULL | NULL | NULL | NULL |
+------+------+------+------+

Manglende argumenter

Kalder UPDATEXML() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT UPDATEXML();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UPDATEXML'

  1. Sådan installeres Lighttpd med PHP, MariaDB og PhpMyAdmin i Ubuntu

  2. Drop udenlandsk nøgle uden at kende navnet på begrænsningen?

  3. Emuler MySQL LIMIT-klausul i Microsoft SQL Server 2000

  4. Fuldstændig afinstallere PostgreSQL 9.0.4 fra Mac OSX Lion?