MariaDB JSON_KEYS() 函数的基础用法与实例

MariaDB JSON_KEYS() 函数是一个用于返回 JSON 对象中的键的函数。

发布于

MariaDB JSON_KEYS() 函数是一个用于返回 JSON 对象中的键的函数。它可以接受一个或两个参数,第一个参数是一个 JSON 对象,第二个参数是一个可选的 JSON 路径,表示要返回的子对象。该函数返回一个 JSON 数组,包含了指定的 JSON 对象中的最上层的键。如果参数中有非 JSON 值,或者指定的 JSON 对象为空,或者指定的路径不存在或不是一个 JSON 对象,那么该函数会返回 NULL

语法

MariaDB JSON_KEYS() 函数的语法如下:

JSON_KEYS(json_obj[, path])

其中:

  • json_obj 是一个 JSON 对象,可以是一个 JSON 字符串,也可以是一个 JSON 列。
  • path 是一个可选的 JSON 路径,表示要返回的子对象。

实例

下面是一些使用 MariaDB JSON_KEYS() 函数的实例。

返回一个简单的 JSON 对象的键

假设我们有一个 JSON 对象,表示一个人的信息:

SET @json = '{"name": "Alice", "age": 18, "hobbies": ["reading", "music", "travel"]}';

我们可以使用 MariaDB JSON_KEYS() 函数,返回这个 JSON 对象的键:

SELECT JSON_KEYS(@json) AS result;

运行结果如下:

+----------------------------+
| result                     |
+----------------------------+
| ["name", "age", "hobbies"] |
+----------------------------+

返回一个嵌套的 JSON 对象的键

假设我们有一个 JSON 对象,表示一个图书馆的藏书:

SET @json = '[{"title": "The Catcher in the Rye", "author": "J.D. Salinger", "year": 1951}, {"title": "Nineteen Eighty-Four", "author": "George Orwell", "year": 1949}]';

我们可以使用 MariaDB JSON_KEYS() 函数,返回这个 JSON 对象中的第一个元素的键:

SELECT JSON_KEYS(@json, '$[0]') AS result;

运行结果如下:

+-----------------------------+
| result                      |
+-----------------------------+
| ["title", "author", "year"] |
+-----------------------------+

返回一个不存在的路径的键

假设我们有一个 JSON 对象,表示一个电影的评分:

SET @json = '{"title": "The Matrix", "rating": 8.7, "genres": ["Action", "Sci-Fi", "Thriller"], "year": 1999}';

我们可以使用 MariaDB JSON_KEYS() 函数,尝试返回这个 JSON 对象中的 director 属性的键:

SELECT JSON_KEYS(@json, '$.director') AS result;

运行结果如下:

+--------+
| result |
+--------+
| NULL   |
+--------+

这是因为这个 JSON 对象中不存在 director 属性,所以该函数返回 NULL

返回一个非 JSON 对象的键

假设我们有一个非 JSON 对象,表示一个日期:

SET @json = '2021-02-25';

我们可以使用 MariaDB JSON_KEYS() 函数,尝试返回这个值的键:

SELECT JSON_KEYS(@json) AS result;

运行结果如下:

+--------+
| result |
+--------+
| NULL   |
+--------+

这是因为这个值不是一个 JSON 对象,所以该函数返回 NULL

返回一个空的 JSON 对象的键

假设我们有一个空的 JSON 对象:

SET @json = '{}';

我们可以使用 MariaDB JSON_KEYS() 函数,返回这个 JSON 对象的键:

SELECT JSON_KEYS(@json) AS result;

运行结果如下:

+--------+
| result |
+--------+
| []     |
+--------+

这是因为这个 JSON 对象没有任何键,所以该函数返回一个空的数组。

相关函数

MariaDB JSON_KEYS() 函数与以下函数有一定的关联:

  • JSON_LENGTH() 函数:用于返回 JSON 值的长度的函数。它可以接受一个或两个参数,第一个参数是一个 JSON 值,第二个参数是一个可选的 JSON 路径,表示要返回的子值。该函数返回一个整数,表示指定的 JSON 值的长度。如果参数中有非 JSON 值,或者指定的路径不存在,那么该函数会返回 NULL
  • JSON_TYPE() 函数:用于返回 JSON 值的类型的函数。它可以接受一个或两个参数,第一个参数是一个 JSON 值,第二个参数是一个可选的 JSON 路径,表示要返回的子值。该函数返回一个字符串,表示指定的 JSON 值的类型。如果参数中有非 JSON 值,或者指定的路径不存在,那么该函数会返回 NULL
  • JSON_VALUE() 函数:用于返回 JSON 值的标量值的函数。它可以接受两个参数,第一个参数是一个 JSON 值,第二个参数是一个 JSON 路径,表示要返回的子值。该函数返回一个标量值,表示指定的 JSON 值的子值。如果参数中有非 JSON 值,或者指定的路径不存在或不是一个标量值,那么该函数会返回 NULL

结论

MariaDB JSON_KEYS() 函数是一个用于返回 JSON 对象中的键的函数。它可以接受一个或两个参数,第一个参数是一个 JSON 对象,第二个参数是一个可选的 JSON 路径,表示要返回的子对象。该函数返回一个 JSON 数组,包含了指定的 JSON 对象中的最上层的键。如果参数中有非 JSON 值,或者指定的 JSON 对象为空,或者指定的路径不存在或不是一个 JSON 对象,那么该函数会返回 NULL。该函数可以用于对 JSON 数据进行结构化的分析,增加其可读性和可理解性。