📅  最后修改于: 2023-12-03 14:44:09.024000             🧑  作者: Mango
在 MariaDB 数据库中,JSON 数据类型被广泛应用,并且提供了多个函数来处理 JSON 数据。其中之一就是 JSON_EXTRACT 函数,用于从 JSON 字符串中提取特定的数据。JSON_EXTRACT 函数接受两个参数:一个是 JSON 字符串,另一个是要提取的路径。
JSON_EXTRACT(json_doc, path)
json_doc
:要提取数据的 JSON 字符串。path
:提取路径,指定要提取的 JSON 数据的位置。假设有一个名为 employees
的表,其中包含一个名为 details
的 JSON 字段,如下所示:
+----+--------------------------------------+
| id | details |
+----+--------------------------------------+
| 1 | {"name": "John", "age": 30, "city": "New York"} |
| 2 | {"name": "Jane", "age": 35, "city": "Los Angeles"} |
+----+--------------------------------------+
要提取 JSON 字符串中的单个键的值,可以使用 JSON_EXTRACT 函数。例如,要提取 name
键的值,可以执行以下查询语句:
SELECT JSON_EXTRACT(details, '$.name') AS employee_name
FROM employees;
返回结果:
+---------------+
| employee_name |
+---------------+
| "John" |
| "Jane" |
+---------------+
如果 JSON 字符串中包含嵌套的对象,可以使用 .
访问其子键。例如,要提取 details
字段中的 city
键的值,可以执行以下查询语句:
SELECT JSON_EXTRACT(details, '$.city') AS employee_city
FROM employees;
返回结果:
+--------------+
| employee_city|
+--------------+
| "New York" |
| "Los Angeles"|
+--------------+
如果 JSON 字符串中包含数组,则可以使用 [index]
访问特定位置的元素。例如,假设 details
字段中包含一个名为 skills
的数组,可以通过以下查询语句提取 skills
数组的第一个元素:
SELECT JSON_EXTRACT(details, '$.skills[0]') AS employee_first_skill
FROM employees;
返回结果:
+---------------------+
| employee_first_skill|
+---------------------+
| "JavaScript" |
| "Java" |
+---------------------+
MariaDB 的 JSON_EXTRACT 函数提供了强大的功能,可以轻松从 JSON 字符串中提取特定的数据。无论是提取单个键的值、嵌套键的值,还是提取数组元素,都可以通过简单的 JSON_EXTRACT 函数完成。