MySQL对JSON类型字段的提取和查询,是MySQL 5.7及以上版本中的新增功能之一。JSON类型字段在存储结构上,采用的是变长字符串类型,表示的是JSON文本. 下面将会对此进行详细的介绍。
创建表格
首先,我们来创建一个名为users的表格,并在其中添加一个JSON类型字段数据示例,如下所示:
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
info JSON,
PRIMARY KEY (id)
);
接着,我们插入一条数据,包含一个JSON字段,其中包含的是字符串键和值对,如下所示:
INSERT INTO users (name, info) VALUES (
'Mike',
'{"country": "China", "gender": "Male", "age": 25}'
);
提取JSON字段的值
为了提取JSON字段的值,我们采用的是MySQL提供的JSON_VALUE()函数。下面演示如何提取JSON字段的值:
SELECT
name,
JSON_VALUE(info, "$.age") AS age,
JSON_VALUE(info, "$.gender") AS gender,
FROM users
WHERE id = 1;
结果如下:
| name | age | gender |
|------|-----|--------|
| Mike | 25 | Male |
JSON_VALUE()函数使用的是XPath语法来指定要提取的JSON键的路径,"$"代表根目录,"$ . age"代表JSON字段中名为age的值。
JSON类型的条件查询
在MySQL 5.7中,可以使用JSON类型字段进行条件查询,MySQL提供了JSON_EXTRACT()和JSON_CONTAINS()函数来实现JSON查询功能。下面分别介绍这两个函数的作用。
JSON_EXTRACT()示例
JSON_EXTRACT()在JSON字段中提取路径所指定的值,只输入查询JSON字段,以及路径。下面是示例SQL查询,使用JSON_EXTRACT()从info字段中提取gender信息:
SELECT name,
JSON_EXTRACT(info, '$.gender') AS gender
FROM users
WHERE gender = 'Male';
结果如下:
| name | gender |
|------|--------|
| Mike | Male |
JSON_CONTAINS()示例
JSON_CONTAINS()函数可以实现以字段值为基础进行筛选的复杂条件查询。下面是一个示例,使用JSON_CONTAINS()来检查数据集是否包含指定值:
SELECT id, name, info
FROM users
WHERE JSON_CONTAINS(info, '"China"', '$.country');
结果如下:
| id | name | info |
|----|------|------------------------------------------------------------|
| 1 | Mike | {"country": "China", "gender": "Male", "age": "25"} |
以上就是MySQL对JSON类型字段数据进行提取和查询的实现攻略,希望能够对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL对JSON类型字段数据进行提取和查询的实现 - Python技术站