Mysql中json类型数据查询

这篇具有很好参考价值的文章主要介绍了Mysql中json类型数据查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        mysql在5.7版本之后就开始支持json数据类型,并且mysql8.0版本对json的处理已经做的非常完善了。json数据类型的优点缺点可自己查询,本文主要介绍一些关于json数据类型的查询操作。

下面用这个表来执行查询演示:

CREATE TABLE `users` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL COMMENT '姓名',
  `address` json NOT NULL COMMENT '住址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入几条数据

INSERT INTO `users` VALUES (1, '张三', '{\"city\": \"石家庄市\", \"tags\": [\"家\", \"公司\"], \"district\": \"桥西区\", \"province\": \"河北省\"}');
INSERT INTO `users` VALUES (2, '李四', '{\"city\": \"广州市\", \"tags\": [\"宿舍\"], \"district\": \"珠海区\", \"province\": \"广州省\"}');
INSERT INTO `users` VALUES (3, '王五', '{\"city\": \"长春市\", \"district\": \"绿园区\", \"province\": \"吉林省\"}');
INSERT INTO `users` VALUES (4, '刘六', '{\"city\": \"昌平区\", \"province\": \"北京市\"}');
INSERT INTO `users` VALUES (5, '张三三', '[{\"city\": \"石家庄市\", \"tags\": [\"家\", \"公司\", \"学校\"], \"district\": \"桥西区\", \"province\": \"河北省\"}, {\"city\": \"郑州市\", \"tags\": [\"宿舍\"], \"district\": \"桥东区\", \"province\": \"河南省\"}]');
INSERT INTO `users` VALUES (6, '李四四', '[{\"city\": \"广州市\", \"tags\": [\"宿舍\"], \"district\": \"珠海区\", \"province\": \"广州省\"}, {\"city\": \"广州市\", \"district\": \"珠海区\", \"province\": \"广州省\"}]');
INSERT INTO `users` VALUES (7, '王五六', '[\"家\", \"公司\", \"学校\"]');

查询json对象指定属性值的数据

1、函数查询:json_extract(json字段, '$.json属性')

select * from users where json_extract(address, '$.province') = "河北省";

mysql查询json内字段,MySQL,mysql,数据库

2、对象操作方法进行查询:json字段->'$.json属性'

select * from users where address->'$.province' = "河北省";

mysql查询json内字段,MySQL,mysql,数据库

查询json数组指定下标值的数据

1、数组操作方式查询:字段->'$[0]'

select  * from users where address->'$[0]'= "家";

mysql查询json内字段,MySQL,mysql,数据库

 根据JSON对象里面的属性个数查询

1、函数查询:json_length(json字段)

select * from users where json_length(address) = 2;

mysql查询json内字段,MySQL,mysql,数据库

 根据JSON数组里面的数组长度查询

1、函数查询:json_length(json字段)

select * from users where json_length(address) = 2;

根据JSON对象属性值为数组的数组长度查询

1、函数查询:json_length(json字段, '$.json属性')

#获取addresss里面tags数组长度为2的数据
select * from users where json_length(address, '$.tags') = 2;

mysql查询json内字段,MySQL,mysql,数据库

 查询JSON对象属性值为数组的任意项存在指定值查询

1、函数查询:JSON_CONTAINS(json字段,JSON_OBJECT('json数组属性', '内容'))

select * from users where JSON_CONTAINS(address,JSON_OBJECT('tags', '家'));

mysql查询json内字段,MySQL,mysql,数据库

 查询JSON数组里面对象属性任意项存在指定属性的数据

select * from users where address->'$[*].city' is not null;

 查询JSON对象存在指定属性的数据

select * from users where address->'$.tags' is not null;

mysql查询json内字段,MySQL,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-542946.html

到了这里,关于Mysql中json类型数据查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL/MariaDB 查询某个 / 多个字段重复数据

    group by name :根据 name 字段分组。 count(*) :计算每个分组的记录数量。 having count 1 :在分组后筛选分组的记录数 1 的分组。 查询结果: name count a 2 子查询:根据 name 分组,筛选分组的记录数 1 的分组,即查询重复的 name 。 外部查询:用 in 筛选 name 重复的记录。 查询结果:

    2024年02月09日
    浏览(64)
  • mysql 查询数据库所有表,表字段

    工作中,编写xmlsql时需要查询全部字段,可以利用sql快速组装所有的列 1.查询所有的表名 2.查询某个表的所有字段 3.组装表的所有列

    2024年02月12日
    浏览(53)
  • MySQL对JSON数据进行查询

    MySQL根据JSON字段的内容检索查询数据 使用 字段 - ‘$.json’ 属性’ 进行查询条件 以下这两种会快很多,可以自己测试 使用 json_extract 函数查询,json_extract(字段, “$.json属性”) 根据json数组查询,用 JSON_CONTAINS (字段, JSON_OBJECT(‘json属性’, “内容”)) MySQL5.7以上支持JSON的操作

    2024年02月11日
    浏览(33)
  • 【MySQL】根据多个字段查询数据进行去重的sql编写

    一、实现思路 根据四个字段进行数据去重的SQL编写可以使用GROUP BY和HAVING子句来实现。 场景一: 假设有一个名为 table1 的数据表,其中包含四个字段: field1 、 field2 、 field3 和 field4 。要求根据这四个字段进行数据去重。 可以使用以下SQL语句: 场景二: 上述SQL语句会返回所

    2024年02月15日
    浏览(55)
  • mysql、clickhouse查询数据库所有的表以及字段信息

    mysql查询数据库所有的表以及字段信息 SELECT     table_schema 数据库名,   table_name 表名,   COLUMN_NAME 列名,   COLUMN_TYPE 数据类型,   DATA_TYPE 字段类型,   CHARACTER_MAXIMUM_LENGTH 长度,   IS_NULLABLE 是否为空,   COLUMN_DEFAULT 默认值,   COLUMN_COMMENT 备注  FROM  INFORMATION_SCHEMA.COLUMNS where -- tab

    2024年02月08日
    浏览(70)
  • Mysql中查询数据库中包含某个字段的所有表名

    有一个商品的名称配置错误了,需要进行修改,但是涉及到的表太多了,因为商品的sku_name被冗余到了很多表中,一个一个的找非常的费事费力,特地记下便捷查询操作以备后用。 本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。 首发链接:https://www.cnblogs.

    2024年02月17日
    浏览(86)
  • MySQL学习【数据类型】【权限查询表】

    整型 类型名称 取值范围 大小 TINYINT -128〜127 1个字节 SMALLINT -32768〜32767 2个宇节 MEDIUMINT -8388608〜8388607 3个字节 INT (INTEGHR) -2147483648〜2147483647 4个字节 BIGINT -9223372036854775808〜9223372036854775807 8个字节 无符号在数据类型后加 unsigned 。 浮点型 类型名称 说明 存储需求 FLOAT 单精

    2024年02月10日
    浏览(47)
  • mysql数据库存数组类型数据,如何判断数组中是否包含某个值?使用mybatisplus查询。

    跟mybatisplus中.in()方法相反的函数 mybatisplus的in函数:查询的是数据库的某个属性的值是否在给定的集合中。这里我们讲的是一个值是否在数据库的某个属性数组中。 说明: 这是一张学生信息表,其中包含了学生曾经就读过的学校。现在我们要做的就是查询哪些学生就读过指

    2024年02月16日
    浏览(98)
  • MyBatis 查询 MySQL 实现返回 List<Map> 或 Map 类型数据操作

      MyBatis 查询 MySQL 数据库,返回结果可以是具体的类、Map、ListMap 等等。将查询结果返回 Map 类型的优点是,不需要为本次查询额外创建类。如果只查询某几个特定的列,且不想额外创建类的话,就可以将结果返回 Map 或 ListMap。   如果能明确查询结果只有一条记录时,返

    2023年04月09日
    浏览(85)
  • mysql中json类型字段用法

    前言 mysql从5.7.8版本开始原生支持了JSON类型数据,同时可以对JSON类型字段中的特定的值进行查询和更新等操作,通过增加JSON类型的属性可以大大的提高我们在mysql表中存储的数据的拓展性,无需每次新增字段时都进行表结构的调整,下面我们不深入讲解底层的实现原理,我们

    2024年02月04日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包