Mysql中json类型数据查询

news2025/2/23 7:16:21

        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') = "河北省";

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

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

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

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

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

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

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

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

 根据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;

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保洁巡检表如何生成二维码?轻松一招快速制作二维码

各大商场每天都需要保洁人员定时清理,为了方便统计管理可将保洁巡检表做成二维码。扫码就能在线填写保洁信息,实时更新信息内容。这种,二维码图片是怎么制作的呢? 一、什么工具能够生成二维码? 机智熊二维码生成器&…

优化带排序的分页查询

优化带排序的分页查询 浅分页: select user_no,user_name,socre from student order by score desc limit 5,20 深分页: select user_no,user_name,socre from student order by score desc limit 80000,20 因为偏移量深分页更大,所以深分页执…

chatgpt赋能python:Python改定位:从脚本语言到全栈语言的转变

Python 改定位:从脚本语言到全栈语言的转变 Python 作为一门面向对象的高级编程语言,一直以来被认为是一种脚本语言。但随着时间的推移,Python 逐渐从科学计算和自动化脚本领域出发,逐步地向全栈领域发展。 Python 的脚本语言起…

【数据结构】特殊的二叉树及其两种存储结构

文章目录 一、二叉树的定义二、特殊的二叉树三、二叉树的存储结构1.顺序结构存储2.链式结构存储 一、二叉树的定义 ​ 了解到树结构之后,介绍一下二叉树,首先我们来做个游戏,我在纸上巳经写好了一个l00以内的正整数数字,请大家想…

1166:求f(x,n) 和1167:再求f(x,n)

1166&#xff1a;求f(x,n) 看起来有点意思的函数题&#xff0c;递归即可 想听题解推荐&#xff1a;《信息学奥赛一本通》题解_1166_求f(x,n) #include <iostream> #include <vector> #include <queue> #include <deque> #include <forward_list>…

如何自学黑客入门技术?

黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员&#xff09;的分享如下&#xff…

数值计算 - 习题复习

1⃣️求矩阵的计算量 2⃣️求相对误差限 3⃣️根据最大误差求绝对误差限和相对误差限 ⚠️为什么使用微分&#xff1f; 绝对误差通过微分近似来计算基于这样的理念&#xff1a;如果我们在某个点附近考虑一个函数&#xff0c;那么该函数在该点附近的行为可以通过该点的切线来近似…

recurdyn一般接触特征参数含义

一般接触特征设置 Static Threshold Velocity静态门槛速度&#xff1a;判断静态摩擦和动态摩擦的标准&#xff0c;若相对速度小于此值&#xff0c;摩擦为静摩擦&#xff1b;若相对速度大于此值&#xff0c;摩擦为动摩擦。静态摩擦区域内摩擦系数计算函数为 Dynamic Threshold V…

【Flutter 工程】006-路由跳转:go_router

【Flutter 工程】006-路由跳转&#xff1a;go_router 文章目录 【Flutter 工程】006-路由跳转&#xff1a;go_router一、概述1、简介2、主页 二、基本使用1、安装2、修改默认的 main.dart3、创建 router.dart4、创建 home_page.dart5、创建 setting_page.dart6、运行结果 三、g…

高并发封神之作的《亿级流量高并发》惨遭GitHub免费开源

前言 随着软件行业的飞速发展&#xff0c;互联网公司对开发者的技能要求也越来越高。而高并发&#xff0c;网络编程、微服务、海量数据的处理等技能&#xff0c;是每一个开发者进阶时的必学知识。 很多程序员在初步掌握了基础编程之后&#xff0c;如何提高编程能力是每一个开发…

AcWing算法提高课-1.3.12潜水员

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 潜水员为了潜水要使用特殊的装备。 他有一个带2种气体的气缸&#xff1a;一个为氧气&#xff0c;一个为氮气。 让潜水员下潜的深…

【后端】黑马MVC案例详解

最近刚入门后端&#xff0c;对不起&#xff0c;我背叛了游戏【哭】 跟着写了一个这样的案例 网页界面是这样的 没写删除&#xff0c;里面带有增加行和修改表单数据的功能 web方面就三个页面&#xff0c;里面涉及到了Mybatis&#xff0c;Tomcat&#xff0c;JSP&#xff0c;Ser…

【数据结构】-三路划分的排序思想

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

【刷题之路】LeetCode 面试题 03.02. 栈的最小值

【刷题之路】LeetCode 面试题 03.02. 栈的最小值 一、题目描述二、解题1、方法1——“辅助栈”1.1、思路分析1.2、代码实现 一、题目描述 原题连接&#xff1a; 面试题 03.02. 栈的最小值 题目描述&#xff1a; 请设计一个栈&#xff0c;除了常规栈支持的pop与push函数以外&am…

MCSM面板一键搭建我的世界服务器 - 外网远程联机【内网穿透工具】

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 转载自远程穿透文章&…

Seata-Server安装

1.去哪下 发布说明: https://github.com/seata/seata/releases 2.怎么玩 本地**Transactional**全局**GlobalTransactional** 我们只需要使用一个 GlobalTransactional 注解在业务方法上: 3.Seata-Server安装 官网地址 3.1.版本0.9.0 seata-server-0.9.0.zip解压到指定目…

Python相关性分析代码

进行相关性分析的代码主要涉及数据处理和统计分析。以下是使用 Python 进行相关性分析的一般步骤&#xff1a; 1.导入必要的库&#xff1a; import pandas as pdimport numpy as npimport seaborn as snsimport matplotlib.pyplot as plt 2.读取数据&#xff1a;将你的数据加载…

PyTorch-nn.Module

目录 1. 基本操作 2. 卷积操作 2.1 torch.nn.functional — conv2d 2.2 torch.nn.Conv2d 3. 池化层 4. 非线性激活 4.1 使用ReLU非线性激活 4.2 使用Sigmoid非线性激活 5. 线性激活 6. PyTorch的一些图像模型 1. 基本操作 import torch from torch import nnclass…

日撸 Java 三百行day54-55

文章目录 说明day54 基于 M-distance 的推荐1. M-distance 理解2.代码理解1.代码中变量的解读2.leave-one-out测试3.计算MAE(平均绝对误差)4.计算RMSE&#xff08;均方根误差&#xff09; day55 基于 M-distance 的推荐&#xff08;续&#xff09;1.基于用户和基于项目的推荐2.…

ASEMI代理长电可控硅BT134的工作原理,BT134的应用领域

编辑-Z 本文将对可控硅BT134的工作原理及应用领域进行详细阐述。首先&#xff0c;我们将介绍可控硅BT134的基本概念和工作原理&#xff1b;其次&#xff0c;我们将探讨可控硅BT134在电力电子领域的应用&#xff1b;接着&#xff0c;我们将分析可控硅BT134在家用电器中的应用&a…