跳到主要内容

GET_BY_KEYPATH

使用“键路径”(key path) 字符串从 VARIANT 中提取嵌套值:

  • GET_BY_KEYPATH 返回 VARIANT
  • GET_BY_KEYPATH_STRING 返回 STRING

键路径采用 Postgres 风格的 {segment} 语法,多个段之间用逗号分隔,例如 '{user,profile,name}',数组索引用数字表示,如 '{items,0}'

语法

GET_BY_KEYPATH(<variant>, <keypath>)
GET_BY_KEYPATH_STRING(<variant>, <keypath>)

返回类型

  • GET_BY_KEYPATHVARIANT
  • GET_BY_KEYPATH_STRINGSTRING

示例

SELECT GET_BY_KEYPATH(PARSE_JSON('{"user":{"name":"Ada","tags":["a","b"]}}'), '{user,name}') AS profile_name;
+--------------+
| profile_name |
+--------------+
| "Ada" |
+--------------+
SELECT GET_BY_KEYPATH(PARSE_JSON('[10,{"a":{"k1":[1,2,3]}}]'), '{1,a,k1}') AS inner_array;
+-------------+
| inner_array |
+-------------+
| [1,2,3] |
+-------------+
SELECT GET_BY_KEYPATH_STRING(PARSE_JSON('{"user":{"name":"Ada"}}'), '{user,name}') AS name_text;
+-----------+
| name_text |
+-----------+
| Ada |
+-----------+
SELECT GET_BY_KEYPATH_STRING(PARSE_JSON('[10,{"a":{"scores":[100,98]}}]'), '{1,a,scores,0}') AS first_score;
+-------------+
| first_score |
+-------------+
| 100 |
+-------------+
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验