sql >> Database >  >> RDS >> MariaDB

Hoe UPDATEXML() werkt in MariaDB

In MariaDB, UPDATEXML() is een ingebouwde functie die een enkel deel van een bepaald fragment van XML-opmaak vervangt door een nieuw XML-fragment en vervolgens de bijgewerkte XML retourneert.

Syntaxis

De syntaxis gaat als volgt:

UPDATEXML(xml_target, xpath_expr, new_xml)

Waar:

  • xml_target is de XML-opmaak die het XML-fragment bevat dat u wilt bijwerken
  • xpath_expr is het specifieke XML-fragment dat u wilt bijwerken
  • new_xml is het XML-fragment dat u wilt vervangen xpath-expr met

Voorbeeld

Hier is een eenvoudig voorbeeld:

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

Resultaat:

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

In dit voorbeeld heeft de originele XML-opmaak een lege <type> element. We gebruikten UPDATEXML() om dat element bij te werken, zodat het inhoud bevat (Dog ).

Nullargumenten

Doorgeven van null voor elk argument retourneert 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;

Resultaat:

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

Ontbrekende argumenten

Aanroepen van UPDATEXML() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:

SELECT UPDATEXML();

Resultaat:

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

  1. PIVOT-query op verschillende records

  2. CSV-bestand importeren in Oracle-tabel met behulp van opgeslagen procedure

  3. MySQL (of PHP?) Groepsresultaten op veldgegevens

  4. een SQL-rij hashen?