JSON_KEYS
描述
以数组形式返回 JSON 对象的所有键(key)。 默认情况返回 root 对象的键,也可以通过参数控制返回具体某个路径对应的对象的键。
语法
JSON_KEYS(<json_object>[, <path>])
参数
必选参数
<json_object>
JSON 类型,需要提取键的 JSON 对象。
可选参数
<path>
String 类型,可选的 JSON 路径,指定检查的 JSON 子文档。如果不提供,默认为根文档。
返回值
Array<String>
返回一个字符串的数组,数组成员就是 JSON 对象的所有键。
注意事项
<json_object>
或者<path>
为 NULL 时返回 NULL。- 如果不是 JSON 对象(比如是 JSON 数组),返回 NULL。
- 如果
<path>
指向的对象不存在,返回 NULL。
示例
-
示例 1
SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}');
+---------------------------------------+
| JSON_KEYS('{"a": 1, "b": {"c": 30}}') |
+---------------------------------------+
| ["a", "b"] |
+---------------------------------------+SELECT JSON_KEYS('{}');
+-----------------+
| JSON_KEYS('{}') |
+-----------------+
| [] |
+-----------------+ -
指定 path
SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b');
+----------------------------------------------+
| JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b') |
+----------------------------------------------+
| ["c"] |
+----------------------------------------------+ -
NULL 参数
SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', NULL);
+---------------------------------------------+
| JSON_KEYS('{"a": 1, "b": {"c": 30}}', NULL) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+SELECT JSON_KEYS(NULL);
+-----------------+
| JSON_KEYS(NULL) |
+-----------------+
| NULL |
+-----------------+ -
不是 JSON 对象
SELECT JSON_KEYS('[1,2]');
+--------------------+
| JSON_KEYS('[1,2]') |
+--------------------+
| NULL |
+--------------------+SELECT JSON_KEYS('{"k": [1, 2, 3]}', '$.k');
+--------------------------------------+
| JSON_KEYS('{"k": [1, 2, 3]}', '$.k') |
+--------------------------------------+
| NULL |
+--------------------------------------+ -
path 指定的对象不存在
SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.c');
+----------------------------------------------+
| JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.c') |
+----------------------------------------------+
| NULL |
+----------------------------------------------+