Kategorien:

Semistrukturierte Datenfunktionen (Analyse/Parsen)

PARSE_XML

Interpretiert eine Eingabezeichenfolge als XML-Dokument und erzeugt einen OBJECT-Wert. Wenn die Eingabe NULL ist, lautet die Ausgabe NULL.

Siehe auch:

CHECK_XML

Syntax

PARSE_XML( <string_expr> )

Argumente

Zeichenfolgenausdruck

Dieser Ausdruck sollte einen VARCHAR-Wert ergeben. Der VARCHAR-Wert sollte gültigen XML-Code enthalten.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist OBJECT. Das OBJECT enthält eine interne Darstellung der XML.

Nutzungshinweise

  • Der Inhalt jedes Elements in XML-Dokumenten ist Text. PARSE_XML versucht, einige XML-Daten von Text in native (Snowflake SQL) Datentypen zu konvertieren.

    • NUMERIC und BOOLEAN:

      PARSE_XML versucht, offensichtlich numerische und boolesche Werte so in die native Darstellung zu konvertieren, dass sich bei erneuter Ausgabe dieser Werte textuell identische Ergebnisse ergeben. Beispiel: Beim Analysieren von Dezimalzahlen versucht PARSE_XML, die Genauigkeit der Darstellung zu erhalten, indem 123,45 als NUMBER(5,2) und nicht als DOUBLE behandelt wird. Allerdings:

      • Zahlen in wissenschaftlicher Notation (z. B. 1,2345e+02) oder Zahlen, die aufgrund von Bereichs- oder Skalierungsbegrenzungen nicht als Festkomma-Dezimalzahlen gespeichert werden können, werden als DOUBLE gespeichert.

      • Wenn der Inhalt eines XML-Elements eine Zahl mit Nachkommastellen ist, kann PARSE_XML nachstehende Nullen abschneiden.

    • TIMESTAMP, DATE, TIME, BINARY:

      Da Werte wie TIMESTAMP, DATE, TIME oder BINARY in XML nicht darstellt werden können, müssen sie in XML als Zeichenfolgen dargestellt werden. PARSE_XML erkennt diese Werte nicht automatisch. Sie werden als Zeichenfolge beibehalten, sodass der Benutzer die Werte bei Bedarf von Zeichenfolgen in native SQL-Datentypen konvertieren muss.

  • XML-Attribute sind eine ungeordnete Sammlung von Name/Wert-Paaren. Die PARSE_XML-Funktion behält nicht unbedingt die Reihenfolge bei. Wenn Sie beispielsweise Text in XML und zurück in Text konvertieren, wird möglicherweise eine Zeichenfolge angezeigt, die die ursprünglichen Informationen in einer anderen Reihenfolge enthält.

  • Möglicherweise werden beim Konvertieren einer Zeichenfolge in XML Änderungen bezüglich des Leerraums zwischen Elementen angezeigt.

Beispiele

CREATE TABLE xtab (v OBJECT);

INSERT INTO xtab SELECT PARSE_XML(column1) AS v
  FROM VALUES ('<a/>'), ('<a attr="123">text</a>'), ('<a><b>X</b><b>Y</b></a>');

SELECT * FROM xtab;

-------------------------+
           V             |
-------------------------+
 <a></a>                 |
 <a attr="123">text</a>  |
 <a><b>X</b><b>Y</b></a> |
-------------------------+