- 类别:
半结构化和结构化数据函数 (提取)
XMLGET¶
根据指定标签的名称和实例编号,从外部 XML 元素的内容中提取 XML 元素对象(通常简称为 标签)。
(请注意,XML 标签与 Snowflake 数据治理标签 不同。
语法¶
实参¶
expression要从中提取元素的表达式。
表达式的计算结果必须为 OBJECT (或包含 OBJECT 的 VARIANT)。OBJECT 必须包含 Snowflake 支持的内部格式的有效 XML。通常,这意味着 OBJECT 由以下之一生成:
调用 PARSE_XML 函数。
加载数据(例如通过 COPY INTO <table> 命令)并指定数据为 XML 格式。
XMLGET 函数不会直接对 VARCHAR 表达式进行操作,即使 VARCHAR 包含有效的 XML 文本也是如此。
tag_name存储在 XML 中的
expression标签的名称。instance_number如果 XML 包含
tag_name的多个实例,则使用instance_number指定要检索的实例。与数组索引一样,instance_number从 0 开始,而不是从 1 开始。instance_number可以省略,在这种情况下,使用默认值 0。
返回¶
返回值的数据类型是 OBJECT。
在以下情况下,该函数会返回 NULL:
如果 XMLGET 的任何实参是 NULL。
如果找不到标签实例。
有关更多详细信息,请参阅使用说明。
使用说明¶
XMLGET 的结果不是标签的内容(即标签之间的文本),而是整个元素(开始标签、内容和结束标签)。从返回的 OBJECT 值中,您可以使用以下 GET 函数提取标签名称、标签属性值以及元素内容(包括嵌套的标签):
要提取属性值,请使用
GET(tag, '@attrname')。要提取内容,请使用
GET(tag, '$')。要提取标签名称,请使用
GET(tag, '@')。
您可以通过嵌套 XMLGET 函数调用来提取嵌套的标签。例如:
可使用
GET(tag, 'inner-tag-name')获取内容中内部标签的位置。如果内容包含多个元素,则位置将表示为数组。您不能使用 XMLGET 来提取最外层元素。要获取最外层元素,请选择
expression本身。
示例¶
以下示例创建了一个具有包含 XML 的 OBJECT 的表,然后使用 XMLGET 函数从该 OBJECT 中提取元素。
此示例演示了如何将 GET 与 XMLGET 结合使用来检索元素的内容。在此示例中,level2 标签包含三个项目(文本和两个嵌套标签),因此 GET 以 ARRAY 形式返回这些项目。嵌套标签由 OBJECTs(键值对)表示。@ 属性包含嵌套标签名称,$ 属性包含嵌套标签内容。
此示例演示了如何将 GET 与 XMLGET 结合使用来检索标签的属性。
备注
有关使用 XMLGET 函数的查询的更多示例,请参阅 处理 XML 的示例。