MySQL JSON类型数据查询方法

 更新时间:2025年04月17日 10:08:11   作者:dark-Moss  
这篇文章主要介绍了MySQL JSON类型数据查询,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

1、json对象

1.1、方法

  • 使用对象操作的方法进行查询:字段->'$.json属性'
  • 使用函数进行查询:json_extract(字段, '$.json属性')
  • 获取JSON数组/对象长度:JSON_LENGTH()

1.2、数据 

CREATE TABLE `test` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `goods_sn` varchar(25) NOT NULL DEFAULT '' COMMENT '商品编码',
  `desc_attr` json NOT NULL COMMENT '描述属性',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='TEST';
INSERT INTO `test`.`test`(`id`, `goods_sn`, `desc_attr`) VALUES (1, 'A0001', '{\"tag\": [\"GRS\", \"GOTS\"], \"size\": \"M\", \"color\": \"红色\", \"material\": \"尼龙\"}');
INSERT INTO `test`.`test`(`id`, `goods_sn`, `desc_attr`) VALUES (2, 'A0002', '{\"tag\": [\"GRS\", \"GOTS\", \"MTD\"], \"size\": \"LA\", \"color\": \"黄色\", \"material\": \"纯棉\"}');

1.3、查询

-- 查询面料不为空的商品
select * from test where desc_attr->'$.material' is not null;
select * from test where JSON_EXTRACT(desc_attr, '$.material') is not null;
-- 查询面料为纯棉的商品
select * from test where desc_attr->'$.material'='纯棉';
select * from test where JSON_EXTRACT(desc_attr, '$.material')='纯棉';
-- 查询标签数量大于2的商品
select * from test where JSON_LENGTH(desc_attr->'$.tag')>2;

2、json数组

2.1、方法

  • 对象操作方式查询:字段->'$[*].属性'
  • 使用函数查询:JSON_CONTAINS(字段,JSON_OBJECT('json属性', '内容'))
  • 获取JSON数组/对象长度:JSON_LENGTH()

2.2、数据

CREATE TABLE `test2` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `goods_sn` varchar(25) NOT NULL DEFAULT '' COMMENT '商品编码',
  `desc_attrs` json NOT NULL COMMENT '描述属性,多个',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='TEST2';
INSERT INTO `test`.`test2`(`id`, `goods_sn`, `desc_attrs`) VALUES (1, 'A0001', '[{\"tag\": [\"GRS\", \"GOTS\"], \"size\": \"M\", \"color\": \"红色\", \"material\": \"尼龙\"}, {\"tag\": [\"GRS\", \"GOTS\", \"MTD\"], \"size\": \"LA\", \"color\": \"黄色\", \"material\": \"纯棉\"}]');
INSERT INTO `test`.`test2`(`id`, `goods_sn`, `desc_attrs`) VALUES (2, 'A0002', '[{\"tag\": [\"GRS\", \"GOTS\"], \"size\": \"M\", \"color\": \"红色\", \"material\": \"尼龙\"}, {\"tag\": [\"GRS\", \"GOTS\", \"MTD\"], \"link\": \"xxx\", \"size\": \"LA\", \"color\": \"黄色\", \"material\": \"纯棉\"}]');
INSERT INTO `test`.`test2`(`id`, `goods_sn`, `desc_attrs`) VALUES (3, 'A0003', '[]');

2.3、查询

-- 查询描述属性不为空的商品
select * from test2 where JSON_LENGTH(desc_attrs) > 0;
-- 查询第1项存在颜色属性的商品
select * from test2 where desc_attrs->'$[0].color' is not null;
-- 查询任意项存在链接属性的商品
select * from test2 where desc_attrs->'$[*].link' is not null;
-- 查询任意项存在链接等于xxx属性的商品
select * from test2 where JSON_CONTAINS(desc_attrs,JSON_OBJECT('link', 'xxx'));

注意

-- [{"link":"xxx"}]
select desc_attrs->'$[*].link' from test2 where id=2;
-- 查询结果为`["xxx"]`
-- 返回每一项的link,所以是个数组

到此这篇关于MySQL JSON类型数据查询的文章就介绍到这了,更多相关MySQL JSON类型数据查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL分库分表总结讲解

    MySQL分库分表总结讲解

    今天小编就为大家分享一篇关于MySQL分库分表总结讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 三种东西永远不要放到mysql数据库里

    三种东西永远不要放到mysql数据库里

    这篇文章主要介绍了mysql数据库不能存储的三样东西,需要的朋友可以参考下
    2014-06-06
  • 用命令创建MySQL数据库(de1)的方法

    用命令创建MySQL数据库(de1)的方法

    下面小编就为大家带来一篇用命令创建MySQL数据库(de1)的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • linux下讲解MySQL安装与登录方法

    linux下讲解MySQL安装与登录方法

    MySQL安装文件已被广泛应用但是也在不断的更新,这里介绍MySQL安装文件设置使用,帮助大家安装更新MySQL安装文件系统。
    2010-11-11
  • 使用Jmeter连接Mysql图文教程

    使用Jmeter连接Mysql图文教程

    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。今天我们来看看如何使用Jmeter连接Mysql
    2016-12-12
  • MYSQL 增加从库方式介绍

    MYSQL 增加从库方式介绍

    这篇文章主要介绍了MYSQL 增加从库方式介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • MySQL索引优化实例分析

    MySQL索引优化实例分析

    这篇文章主要介绍了MySQL索引优化实例分析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • MySQL架构体系知识点总结

    MySQL架构体系知识点总结

    在本篇内容里我们给大家整理了关于MySQL架构体系的相关知识点内容以及相关实例,需要的朋友们学习下。
    2019-02-02
  • mysql中的不等于实例详解

    mysql中的不等于实例详解

    这篇文章主要介绍了mysql中的不等于实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • SPSS连接mysql数据库的超详细操作教程

    SPSS连接mysql数据库的超详细操作教程

    小编最近在学习SPSS,在为数据库建立连接时真的踩了很多坑,这篇文章主要给大家介绍了关于SPSS连接mysql数据库的超详细操作教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02

最新评论