Catégories :

Fonctions de données semi-structurées (analyse)

PARSE_XML

Interprète une chaîne d’entrée comme un document XML, produisant une valeur OBJECT. Si l’entrée est NULL, la sortie est NULL.

Voir aussi :

CHECK_XML

Syntaxe

PARSE_XML( <string_expr> )

Arguments

string_expr

Cette expression devrait correspondre à une valeur VARCHAR. La valeur VARCHAR doit être au formatXML valide.

Renvoie

Le type de données de la valeur renvoyée est OBJECT. L’OBJECT contient une représentation interne du XML.

Notes sur l’utilisation

  • Le contenu de chaque élément des documents XML est du texte. PARSE_XML tente de convertir certaines données XML de texte en données natives (Snowflake SQL) Types de données.

    • NUMERIC et BOOLEAN :

      PARSE_XML tente de convertir des valeurs évidemment numériques et booléennes en représentation native de manière à ce que l’impression de ces valeurs donne des résultats textuellement identiques. Par exemple, lors de l’analyse des nombres décimaux, PARSE_XML tente de préserver l’exactitude de la représentation en considérant 123,45 comme NUMBER(5,2) et non comme DOUBLE. Cependant :

      • Les nombres en notation scientifique (c.-à-d. 1.2345e+02) ou ceux qui ne peuvent pas être stockés en tant que décimales à virgule fixe en raison de limitations de plage ou d’échelle sont stockés sous la forme DOUBLE.

      • Si le contenu d’un élément XML est un nombre avec des chiffres après la virgule, alors PARSE_XML peut tronquer les zéros de fin.

    • TIMESTAMP, DATE, TIME, BINARY:

      Comme le format XML ne représente pas des valeurs telles que TIMESTAMP, DATE, TIME ou BINARY de manière native, celles-ci doivent être représentées sous forme de chaînes au format XML. PARSE_XML ne reconnaît pas automatiquement ces valeurs ; elles sont conservées sous forme de chaînes. Les utilisateurs doivent donc convertir les valeurs des chaînes en types de données SQL natifs si nécessaire.

  • Les attributs XML sont un ensemble non classé de paires nom/valeur. La fonction PARSE_XML ne préserve pas nécessairement l’ordre. Par exemple, la conversion de texte en XML et de nouveau en texte peut entraîner une chaîne qui contient les informations d’origine dans un ordre différent.

  • Vous pouvez voir des changements dans les espaces entre les éléments lors de la conversion de chaîne en XML.

Exemples

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> |
-------------------------+
Revenir au début