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.

Nutzungshinweise

Jeder Elementarwert in XML-Dokumenten ist Text. Es ist jedoch nicht sehr nützlich für die Verarbeitung der Daten.

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. 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. 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. Da XML Werte wie TIMESTAMP, DATE, TIME oder BINARY nativ nicht darstellt, müssen diese als Zeichenfolgen dargestellt werden.

Im aktuellen Snowflake-Release bietet PARSE_XML keine automatische Erkennung dieser Werte. Sie werden als Zeichenfolgen behandelt (und es ist die explizite Konvertierung von Zeichenfolgen erforderlich).

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 auch Ä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> |
-------------------------+