MariaDB JSON_EXTRACT() 函数的基础用法与实例
MariaDB JSON_EXTRACT()
函数是一个用于从 JSON 文档中提取数据的函数。
MariaDB JSON_EXTRACT()
函数是一个用于从 JSON 文档中提取数据的函数。它可以接受一个或多个参数,第一个参数是一个 JSON 文档,后面的参数是一个或多个 JSON 路径,表示要提取的位置。该函数返回一个或多个 JSON 值,对应于匹配的路径。如果参数中有非 JSON 值,或者没有任何路径匹配,那么该函数会返回 NULL
。
语法
MariaDB JSON_EXTRACT()
函数的语法如下:
JSON_EXTRACT(json_doc, path[, path] ...)
其中:
json_doc
是一个 JSON 文档,可以是一个 JSON 字符串,也可以是一个 JSON 列。path
是一个 JSON 路径,表示要提取的位置。可以指定多个路径,用逗号分隔。
实例
下面是一些使用 MariaDB JSON_EXTRACT()
函数的实例。
从一个简单的 JSON 文档中提取一个属性的值
假设我们有一个 JSON 文档,表示一个人的信息:
SET @json = '{"name": "Alice", "age": 18, "hobbies": ["reading", "music", "travel"]}';
我们可以使用 MariaDB JSON_EXTRACT()
函数,从这个 JSON 文档中提取 name
属性的值:
SELECT JSON_EXTRACT(@json, '$.name') AS result;
运行结果如下:
+---------+
| result |
+---------+
| "Alice" |
+---------+
从一个嵌套的 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_EXTRACT()
函数,从这个 JSON 文档中提取第二本书的作者的值:
SELECT JSON_EXTRACT(@json, '$[1].author') AS result;
运行结果如下:
+-----------------+
| result |
+-----------------+
| "George Orwell" |
+-----------------+
从一个 JSON 文档中提取多个路径的值
假设我们有一个 JSON 文档,表示一个电影的评分:
SET @json = '{"title": "The Matrix", "rating": 8.7, "genres": ["Action", "Sci-Fi", "Thriller"], "year": 1999}';
我们可以使用 MariaDB JSON_EXTRACT()
函数,从这个 JSON 文档中提取 title
,rating
,和 year
的值:
SELECT JSON_EXTRACT(@json, '$.title', '$.rating', '$.year') AS result;
运行结果如下:
+---------------------------+
| result |
+---------------------------+
| ["The Matrix", 8.7, 1999] |
+---------------------------+
注意,如果提供了多个路径,那么该函数会返回一个数组,包含了所有匹配的值。
从一个 JSON 文档中提取一个不存在的路径的值
假设我们有一个 JSON 文档,表示一个水果的列表:
SET @json = '["apple", "banana", "cherry"]';
我们可以使用 MariaDB JSON_EXTRACT()
函数,从这个 JSON 文档中提取第四个元素的值:
SELECT JSON_EXTRACT(@json, '$[3]') AS result;
运行结果如下:
+--------+
| result |
+--------+
| NULL |
+--------+
这是因为这个 JSON 文档中不存在第四个元素,所以该函数返回 NULL
。
从一个非 JSON 值中提取数据
假设我们有一个非 JSON 值,表示一个日期:
SET @json = '2021-02-25';
我们可以使用 MariaDB JSON_EXTRACT()
函数,尝试从这个值中提取数据:
SELECT JSON_EXTRACT(@json, '$') AS result;
运行结果如下:
+--------+
| result |
+--------+
| NULL |
+--------+
这是因为这个值不是一个有效的 JSON 文档,所以该函数返回 NULL
。
相关函数
MariaDB JSON_EXTRACT()
函数与以下函数有一定的关联:
JSON_INSERT()
函数:用于向 JSON 文档中插入数据的函数。它可以接受三个或更多个参数,第一个参数是一个 JSON 文档,后面的参数是成对的,表示要插入的路径和值。该函数返回一个新的 JSON 文档,包含了插入后的数据。如果参数中有非 JSON 值,或者路径已经存在,那么该函数会返回NULL
。JSON_REPLACE()
函数:用于替换 JSON 文档中的数据的函数。它可以接受三个或更多个参数,第一个参数是一个 JSON 文档,后面的参数是成对的,表示要替换的路径和值。该函数返回一个新的 JSON 文档,包含了替换后的数据。如果参数中有非 JSON 值,或者路径不存在,那么该函数会返回NULL
。JSON_SET()
函数:用于设置 JSON 文档中的数据的函数。它可以接受三个或更多个参数,第一个参数是一个 JSON 文档,后面的参数是成对的,表示要设置的路径和值。该函数返回一个新的 JSON 文档,包含了设置后的数据。如果参数中有非 JSON 值,那么该函数会返回NULL
。该函数与JSON_INSERT()
和JSON_REPLACE()
的区别是,它会根据路径是否存在,自动选择插入或替换的操作。
结论
MariaDB JSON_EXTRACT()
函数是一个用于从 JSON 文档中提取数据的函数。它可以接受一个或多个参数,第一个参数是一个 JSON 文档,后面的参数是一个或多个 JSON 路径,表示要提取的位置。该函数返回一个或多个 JSON 值,对应于匹配的路径。如果参数中有非 JSON 值,或者没有任何路径匹配,那么该函数会返回 NULL
。该函数可以用于对 JSON 数据进行灵活的获取,增加其可用性和可分析性。