カテゴリ:

半構造化データ関数 (解析)

PARSE_XML

入力文字列を XML ドキュメントとして解釈し、 OBJECT 値を生成します。入力が NULLの場合、出力は NULLです。

使用上の注意

XML ドキュメントのすべての基本値はテキストです。ただし、データの処理にはあまり役立ちません。

PARSE_XML は、明らかに数値とブール値をネイティブ表現に変換しようとします。これらの値を印刷すると、テキスト上で同一の結果が生成されます。10進数を解析するとき、 PARSE_XML は、123.45を DOUBLEではなく NUMBER(5、2)として処理することにより、表現の正確さを保持しようとします。ただし、科学表記法の数値(1.2345e +02など)、または、範囲またはスケールの制限のために固定小数点として保存できない数値は DOUBLE として保存されます。XML は TIMESTAMP、 DATE、 TIME、または BINARY などの値をネイティブに表さないため、これらは文字列として表される必要があります。

現在のSnowflakeリリースでは、 PARSE_XML はこれらの値の自動認識を提供していません。それらは文字列として扱われます(文字列からの明示的な変換が必要)。

XML 属性は、名前/値のペアの 順不同 コレクションです。PARSE_XML 関数は必ずしも順序を保持しません。たとえば、テキストを XML に変換してからテキストに戻すと、異なる順序で元の情報を含む文字列が生成される場合があります。

また、文字列から XML に変換する際に、要素間の空白に変化が見られる場合があります。

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