类别:

半结构化和结构化数据函数 (提取)

GET_PATH、:

使用路径名从半结构化数据中提取值。

GET_PATH 是 GET 的变体;它将 VARIANT、OBJECT 或 ARRAY 列名用作第一个实参,并根据作为第二个实参提供的路径名提取字段或元素的值。

语法

GET_PATH( <column_identifier> , '<path_name>' )

<column_identifier>:<path_name>

:( <column_identifier> , '<path_name>' )
Copy

实参

column_identifier

计算结果为 OBJECTARRAYVARIANT 列的表达式。

path_name

计算结果为 VARCHAR 的表达式。这将指定要提取的字段或元素的路径。

对于 结构化类型,必须指定字符串常量。

返回

  • 返回值是 ARRAY 的指定元素,或者是对应于 OBJECT 中键值对的指定键的值。

  • 如果输入对象是半结构化 OBJECT、ARRAY 或 VARIANT,则该函数返回 VARIANT。数据类型为 VARIANT,因为:

    • 在 ARRAY 中,每个元素都属于 VARIANT 类型。

    • 在 OBJECT 中,每个键值对中的值都是 VARIANT 类型。

  • 如果输入对象是 结构化 OBJECT、结构化 ARRAY或 MAP,该函数返回为该对象指定的类型的值。

    例如,如果输入对象的类型是 ARRAY(NUMBER),则该函数返回 NUMBER。

使用说明

  • GET_PATH 等价于 GET 函数链。如果路径名与任何元素不对应,则该函数返回 NULL。

  • 路径名语法是标准 JavaScript 表示法;它由字段名称(标识符)和句点(例如 .)以及索引运算符(例如 [<index>])连接而成:

    • 第一个字段名称不需要指定前导句点。

    • 索引运算符中的索引值可以是非负十进制数(用于数组),也可以是加单引号或双引号的字符串字面量(用于对象字段)。

    有关更多详细信息,请参阅 查询半结构化数据

  • GET_PATH 还支持使用 : 字符作为提取运算符的语法快捷方式,该字符将列名(可以包含句点)与路径说明符分开。

    为了保持语法一致性,路径表示法还支持 SQL 风格的加双引号的标识符,并将 : 用作路径分隔符。

    使用 : 运算符时,任何整数或字符串子表达式都可以包含在 [] 中。

示例

vartab 表中提取 name 字段:

SELECT GET_PATH(v, 'attr[0].name') FROM vartab;
Copy

这与第一个示例相同,但使用 : 作为提取运算符:

SELECT v:attr[0].name FROM vartab;
Copy

提取运算符 : 是左结合的。在上面的例子中,使用 v:attr[0]:name 的效果与使用左侧 : 相同,都会生成一个变体值(包含一个对象),从中右侧提取运算符 : 会提取 name 字段的值。

这与第一个示例相同,但使用了 SQL 风格的加双引号的标识符,并使用 : 作为路径分隔符:

SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;
Copy
语言: 中文