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_KEYPATH:VARIANTGET_BY_KEYPATH_STRING:STRING
示例
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 |
+-------------+

