返回顶部
首页 > 资讯 > 数据库 >Mysql JSON对象和JSON数组查询
  • 377
分享到

Mysql JSON对象和JSON数组查询

mysqljsonmybatis 2023-09-05 09:09:19 377人浏览 安东尼
摘要

文章目录 1. 函数说明2. JSON对象3. 字符串JSON数组3.1 AND关系3.2 OR关系 4. 对象数组5. 集成 Mybatis plus6. 模糊查询7. j

文章目录


在这里插入图片描述
file_type可以是 varchar,也可以是 JSON类型

1. 函数说明

jsON_CONTaiNS(json_doc, val[, path]):判断是否包含某个json值

JSON_ARRAY([val[, val] ...]):创建json数组

2. JSON对象

{"key": 1, "name": "万飞"}

查询

SELECT * FROM `ak_file_config` where file_type -> '$.name' = "万飞"

在这里插入图片描述

3. 字符串JSON数组

3.1 AND关系
["EXE", "白加黑", "DLL"]

查询

SELECT * FROM `ak_file_config` where JSON_CONTAINS(file_type, JSON_ARRAY("白加黑","DLL"))

在这里插入图片描述

3.2 OR关系
SELECT * FROM `ak_file_config` where JSON_CONTAINS(file_type,'"DLL"') OR JSON_CONTAINS(file_type,'"EXE"')

在这里插入图片描述

4. 对象数组

参考 https://wenku.baidu.com/view/0831b7cc6194dd88d0d233d4b14e852459fb3958?aggId=0831b7cc6194dd88d0d233d4b14e852459fb3958

5. 集成 mybatis plus

// jsonArray查询.apply(CollUtil.isNotEmpty(query.getFileType()), StrUtil.format("JSON_CONTAINS(t.file_type, JSON_ARRAY({}))",                // 设置占位符{0},{1},{2}                IntStream.range(0, Optional.ofNullable(query.getFileType()).orElse(Collections.emptyList()).size())                        .mapToObj(i -> "{".concat(String.valueOf(i)).concat("}"))                        .collect(Collectors.joining(","))),        Optional.ofNullable(query.getFileType()).orElse(Collections.emptyList()).toArray())

参考 https://blog.csdn.net/qq_31832209/article/details/125374325

6. 模糊查询

SELECT* FROM`ak_file_config` WHEREJSON_EXTRACT(file_type, '$' ) LIKE '%DL%';

在这里插入图片描述
代码里参考

String productOrCompanyName = query.getProductOrCompanyName().replace("\"", "_");.and(StrUtil.isNotBlank(productOrCompanyName),                        wq -> wq.apply("JSON_EXTRACT(LOWER(t.label_involve_product), '$') LIKE LOWER(CONCAT('%', {0}, '%'))", productOrCompanyName)    .or()    .apply("JSON_EXTRACT(LOWER(t.label_involve_company), '$') LIKE LOWER(CONCAT('%', {0}, '%'))", productOrCompanyName))

如果输入字符串带双引号,需要将\"替换成_进行模糊搜索,但是会查询出不带双引号的数据

7. json_table

Mysql最低版本8.0.4

7.1 分组计算总数
SELECT* FROMJSON_TABLE ( '["11", "22"]', '$[*]' COLUMNS ( NESTED PATH '$' COLUMNS ( result INT PATH '$' ) ) ) AS t;

在这里插入图片描述
json对象数组参考 https://cdn.modb.pro/db/484630

在表中关联字符串数组分组查询
在这里插入图片描述
需求:统计各类型的数量

SELECTt1.result,count( t1.result ) AS count FROMpe_main_body tINNER JOIN JSON_TABLE ( t.overview_product_type, '$[*]' COLUMNS ( NESTED PATH '$' COLUMNS ( result VARCHAR ( 100 ) PATH '$' ) ) ) AS t1 WHEREdel_flag = FALSE GROUP BYt1.result

在这里插入图片描述

7.2 对象去重

在这里插入图片描述
例如:match_context字段是对象数组,对象里面有两个字段keyWorddescribe

需求:查询出所有的不重复的对象

SELECT DISTINCTt1.result FROMii_sensitive_resource_info tINNER JOIN JSON_TABLE ( t.match_context, '$[*]' COLUMNS ( NESTED PATH '$' COLUMNS ( result JSON PATH '$' ) ) ) AS t1 WHEREcompany_id IN ( 296 )

DISTINCT:去重

在这里插入图片描述
改为字段返回

SELECTresult ->> '$.keyWord' AS keyWord,result ->> '$.describe' AS descInfo FROM(SELECT DISTINCTt1.result FROMii_sensitive_resource_info tINNER JOIN JSON_TABLE ( t.match_context, '$[*]' COLUMNS ( NESTED PATH '$' COLUMNS ( result JSON PATH '$' ) ) ) AS t1 WHEREcompany_id IN ( 296 )) tmp

在这里插入图片描述

->>:会去除双引号

8. JSONArray查询

  • JSONArray 符号是$[*]$[0]是数组对象时,不能查询所有,老版本不支持$[*],使用新版本
  • JSONObject 符号是 $
8.1 模糊查询
SELECT * FROM `tf_cloud`.`tf_low_data_testUser` WHERE  `address`->'$[0].name' LIKE "%b%"

在这里插入图片描述

8.2 等值匹配
SELECT * FROM `tf_cloud`.`tf_low_data_testUser` WHERE  `address`->'$[0].name' = "bbb"

在这里插入图片描述

8.3 时间搜索
SELECT * FROM `tf_cloud`.`tf_low_data_testUser` WHERE CAST(JSON_UNQUOTE(`address`->'$[0].date') AS DATETIME) BETWEEN '2023-08-13' AND '2023-08-17'

在这里插入图片描述

8.4 在列表
SELECT * FROM `tf_cloud`.`tf_low_data_testUser` WHERE  `address`->'$[0].name' IN ("bbb","ccc")

在这里插入图片描述

8.5 包含
SELECT * FROM `tf_cloud`.`tf_low_data_testUser` WHERE  json_contains(`address`->"$[*].nickname",'["bbb"]')

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_38983728/article/details/126144608

您可能感兴趣的文档:

--结束END--

本文标题: Mysql JSON对象和JSON数组查询

本文链接: https://lsjlt.com/news/395033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mysql JSON对象和JSON数组查询
    文章目录 1. 函数说明2. JSON对象3. 字符串JSON数组3.1 AND关系3.2 OR关系 4. 对象数组5. 集成 Mybatis plus6. 模糊查询7. j...
    99+
    2023-09-05
    mysql json mybatis
  • jquery和php json字符串转数组对象 和 数组对象转json字符串
    JSON 与 数组对象转化 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '...
    99+
    2023-09-01
    jquery json 前端
  • MySQL对JSON数据进行查询
    MySQL根据JSON字段的内容检索查询数据 使用 字段 -> ‘$.json’ 属性’ 进行查询条件 以下这两种会快很多,可以自己测试 使用 json_extract 函数查询,json_extract(字段, “$.json...
    99+
    2023-08-16
    mysql json mybatis
  • MySQL对JSON数据进行IN查询
      JSON相关函数可以看这个博客 【MySQL】对JSON数据操作(全网最全)_mysql json_0世界和平0的博客-CSDN博客 SELECT 字段名FROM 表名WHERE CASE WHEN JSON...
    99+
    2023-09-05
    json mysql 后端 数据库
  • JSON数组和JSON对象在vue中的获取方法
    这两天在学习vue,主要是为了实现前后端的分离,因此数据的传输是必不可少的一个环节。 为了快速入门,参考了vue官网的视频,这个过程由于引入vue.js的问题走了一些弯路,这个我们以...
    99+
    2024-04-02
  • php输出json的4种格式 json对象 json数组 json嵌套
    第一种:JSON数组 返回的格式 [     {         "title":"百度",         "time":"2000",         "website":"www.baidu.com"     },   ...
    99+
    2023-08-31
    php 开发语言
  • javascript json对象转换数组
    在前端开发中,我们经常会涉及到 JavaScript 对象和数组的转换。其中,一种常见的场景是将 JSON 对象转换为数组。在本文中,我们将探讨如何使用 JavaScript 中的方法将 JSON 对象转换为数组。JSON 是一种轻量级的数...
    99+
    2023-05-14
  • php js 对象转json字符串数组对象数组对象数组
    在 Web 开发中,PHP 和 JavaScript 是两个最常用的编程语言。其中,PHP 作为一种服务器端编程语言,主要用于生成动态网页,而 JavaScript 则是一种客户端编程语言,主要用于制作网页交互效果。在 PHP 和 Java...
    99+
    2023-05-19
  • json转换成对象数组 php
    在开发一个Web应用程序的过程中,经常需要对数据进行处理,其中仅仅处理字符串是不够的,通常需要在不同的编程语言之间进行数据的转换。在PHP中,我们需要将JSON字符串转换为对象数组。下面是一些关于如何将JSON转换为PHP对象数组的介绍。J...
    99+
    2023-05-19
  • php的对象转json字符串数组对象
    在PHP开发中,对象转换成JSON字符串或者JSON数组对象是一项非常常见的任务。JSON字符串和JSON数组对象都是一种标准的数据交换格式,它们可以在不同的平台和编程语言之间进行数据交换,并且非常易于阅读和解析。本文将介绍PHP中如何将一...
    99+
    2023-05-19
  • php json如何转换成对象数组对象
    这篇文章主要介绍“php json如何转换成对象数组对象”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php json如何转换成对象数组对象”文章能帮助大家解决问题。将json数据转换成对象使用js...
    99+
    2023-07-05
  • mysql查询json的值
    这篇文章主要介绍了mysql查询json的值,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql查询json的值的方法:首先打开命令窗口;然...
    99+
    2024-04-02
  • mysql json 基础查询
    mysq json 主要有JSON 对象(json object )和JSON 数组(json array )两种类型 $表示整个json对象,在索引数据时用下标(对于json array,从0开始)或键值(对于json object,含有...
    99+
    2023-08-16
    mysql java
  • Java如何将String转换成json对象或json数组
    目录将String转换成json对象或json数组字符串转json数组的解决首先导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个j...
    99+
    2024-04-02
  • Java怎么将String转换成json对象或json数组
    本篇内容介绍了“Java怎么将String转换成json对象或json数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将String转换成...
    99+
    2023-06-29
  • php怎么使用json对象数组
    JSON是一种常见的数据格式,它以一种易于理解的方式表示数据,方便数据的传输和解析。在PHP中,使用JSON对象数组非常方便,可以让我们快速地解析和处理JSON格式的数据。本文将详细介绍PHP如何使用JSON对象数组。一、PHP如何生成JS...
    99+
    2023-05-19
  • json对象数组格式是什么
    JSON对象数组格式是一个包含多个JSON对象的数组。每个JSON对象都是一个键值对的集合,其中键是字符串,值可以是字符串、数字、布...
    99+
    2023-08-16
    json
  • Mysql中json类型数据查询
            mysql在5.7版本之后就开始支持json数据类型,并且mysql8.0版本对json的处理已经做的非常完善了。json数据类型的优点缺点可自己查询,本文主要介绍一些关于json数据类型的查询操作。 下面用这个表来执行查询...
    99+
    2023-08-31
    mysql 数据库
  • python查询mysql,返回json
    import MySQLdb import json def getSql(): try: con = MySQLdb.connect(host='localhost', user=''...
    99+
    2023-01-31
    python mysql json
  • Mysql中json类型查询
    Mysql中json类型查询 MySQL提供了一些函数和操作符,用于在JSON数据类型中进行查询。下面是一些常用的MySQL JSON查询使用方法: 提取JSON字段的值: 使用->操作符可以提取JSON字段的值。例如,假设有一个名为dat...
    99+
    2023-08-17
    mysql json android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作