- 类别:
半结构化和结构化数据函数 (提取)
GET_PATH、:
¶
使用路径名从半结构化数据中提取值。
GET_PATH 是 GET 的变体;它将 VARIANT、OBJECT 或 ARRAY 列名用作第一个实参,并根据作为第二个实参提供的路径名提取字段或元素的值。
语法¶
GET_PATH( <column_identifier> , '<path_name>' )
<column_identifier>:<path_name>
:( <column_identifier> , '<path_name>' )
实参¶
返回¶
返回值是 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;
这与第一个示例相同,但使用 :
作为提取运算符:
SELECT v:attr[0].name FROM vartab;提取运算符
:
是左结合的。在上面的例子中,使用v:attr[0]:name
的效果与使用左侧:
相同,都会生成一个变体值(包含一个对象),从中右侧提取运算符:
会提取name
字段的值。
这与第一个示例相同,但使用了 SQL 风格的加双引号的标识符,并使用 :
作为路径分隔符:
SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;