JSON(JavaScript Object Notation)是一种轻量级数据交换格式,MySQL在5.7版本之后开始支持JSON数据类型。本文将由多个方面详细阐述MySQL解析JSON的使用方法。
一、MySQL解析JSON函数
MySQL提供了多个函数来操作JSON类型数据,以下是常用的几个函数:
1. JSON_OBJECT:用于创建JSON对象,接受key-value参数,例如:
SELECT JSON_OBJECT('a', 1, 'b', 'hello', 'c', NOW()) AS json_obj;
2. JSON_ARRAY:用于创建JSON数组,接受多个任意类型参数,例如:
SELECT JSON_ARRAY(1, 'hello', NOW()) AS json_arr;
3. JSON_EXTRACT:用于提取JSON数据中的值。接受两个参数,第一个是JSON数据,第二个是提取路径,例如:
SELECT JSON_EXTRACT('{"a": 1, "b": "hello", "c": {"d": true}}', '$.a') AS val;
如果JSON数据是在表中存储的,则需要使用table.column的形式指定列名,例如:
SELECT JSON_EXTRACT(column_name, '$.a') FROM table_name;
二、MySQL解析JSON字符串所有的key
如果我们有一个包含多个JSON对象的JSON数组,我们可以使用JSON_KEYS函数获取数组中所有JSON对象的key。例如:
SELECT JSON_KEYS('[{"name":"John", "age":30}, {"name":"Jane", "city":"New York"}]') AS keys;
三、MySQL解析JSON数组
我们可以使用JSON_ARRAYAGG函数将表中的多行数据合并到一个JSON数组中,例如:
SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'age', age)) FROM table_name;
四、MySQL解析JSON格式字段
有时候我们需要在JSON数据中查询某个属性是否存在,我们可以使用JSON_CONTAINS函数来判断。例如:
SELECT * FROM table_name WHERE JSON_CONTAINS(column_name, '{"key": "value"}');
五、MySQL解析JSON数据
我们可以使用JSON_TABLE函数将JSON数据解析为表格形式,并提取其中的数据。例如:
SELECT * FROM JSON_TABLE('{"a": 1, "b": "hello"}', '$' COLUMNS(a INT PATH '$.a', b VARCHAR(20) PATH '$.b')) AS json_table;
六、MySQL解析JSON实例
接下来我们使用一个实例来演示如何解析JSON数据。下面的表包含了每个人的姓名、年龄和工作信息,其中工作信息为JSON格式。
CREATE TABLE person ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, job_info JSON ); INSERT INTO person VALUES (1, 'John', 30, '{"company": "Google", "position": "Software Engineer", "salary": 10000}'), (2, 'Jane', 25, '{"company": "Microsoft", "position": "Product Manager", "salary": 8000}');
查找工资大于9000的人的姓名和公司:
SELECT name, JSON_EXTRACT(job_info, '$.company') AS company FROM person WHERE JSON_EXTRACT(job_info, '$.salary') > 9000;
更新John的工资:
UPDATE person SET job_info = JSON_SET(job_info, '$.salary', 12000) WHERE name = 'John';
七、MySQL解析JSON字符串数组
我们可以使用JSON_TABLE函数来解析JSON字符串数组,例如:
SELECT * FROM JSON_TABLE('[{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"}]', '$[*]' COLUMNS(id INT PATH '$.id', name VARCHAR(20) PATH '$.name')) AS json_table;
八、MySQL解析JSON字符串返回null
如果JSON数据中没有我们所需的属性,使用JSON_EXTRACT函数会返回null。如果我们需要返回默认值,可以使用JSON_EXTRACT函数的第三个参数,例如:
SELECT JSON_EXTRACT(column_name, '$.not_existed', 'default_value') FROM table_name;
九、MySQL解析JSON中某个属性
如果我们只需要在JSON对象中提取某个属性的值,可以使用->符号,例如:
SELECT job_info->'$.salary' AS salary FROM person;
以上就是MySQL解析JSON的相关内容,通过本文的介绍,你可以掌握MySQL解析JSON数据的各种用法,并灵活运用到自己的项目中。
原创文章,作者:ILQNM,如若转载,请注明出处:https://www.506064.com/n/369488.html