Mysql 直接查询存储的Json字符串中的数据

我们平时使用mysql,出于项目需求,可能需要直接将Java对象或者一个大json,直接存到表中的某个字段中;使用的时候再查出来,反序列化到对象或者一个Map中,方便我们操作;

大多时候,我们可能并不需要所有的数据,只想使用这个对象或者json中的某一个值,来做逻辑判断而已

那我们可以这样做,例如:原来我们需要查出某个字段的数据,然后反序列化成对象再调用其中的一个属性

SELECT content FROM table_name WHERE id = 32;

查询结果:
列名:content
结果:{"fieldType":"SELECT","selectType":"SINGLE","options":["本科","研究生","硕士"]}

TableNameContent content = JsonUtils.jsonNode2Type(TableNameContent.class, TableName.getContent());

 if (SELECT.equals(content.getFieldType())){
     //bala... bala...
 }

这样做,其实也没啥毛病,那么其实还可以换一种其他的方式;

我们可以使用使用 json字段名->’$.json属性’ 进行查询 直接在content这个列里查出json后,使用mysql自带的函数,直接查询出我们想要的某一个字段;

SELECT content, REPLACE(json_extract(content,'$.fieldType'),'"','') fieldType
FROM table_name WHERE id = 32;
或
SELECT content, REPLACE(content->'$.fieldType','"','') fieldType
FROM table_name WHERE id = 32;

查询结果:
列名:content                                                                       fieldType
结果:{"fieldType":"SELECT","selectType":"SINGLE","options":["本科","研究生","硕士"]}    SELECT

那我们就可以直接拿到这个字段的值来进行做我们想做的事情了。直接查出来的数据要是原来存的时候就带有双引号,那么查出来的也是带双引号的,可以使用REPLACE函数替换一下就好了。

当然还有更多的用法:

1 -->  SELECT content FROM table_name WHERE content->'$.fieldType'='SELECT';

{"fieldType":"SELECT","selectType":"MULTIPLE","options":["选择一","选择二","选择三"]}
{"fieldType":"SELECT","selectType":"SINGLE","options":["2w","3w","4w","5w"]}
{"fieldType":"SELECT","selectType":"SINGLE","options":["本科","研究生","硕士"]}
{"fieldType":"SELECT","selectType":"SINGLE","options":["11","22","44","23"]}

2 --> SELECT content FROM sy_config_member_info WHERE content->'$.fieldType'='SELECT' AND content->'$.selectType'='MULTIPLE';

{"fieldType":"SELECT","selectType":"MULTIPLE","options":["选择一","选择二","选择三"]}

当然,这样做的性能可能就不要指望很高了噢,谨慎使用哈~

到此这篇关于Mysql 直接查询存储的Json字符串中的数据的文章就介绍到这了,更多相关Mysql 直接查询存储Json内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python查询mysql,返回json的实例

    如下所示: import MySQLdb import json def getSql(): try: con = MySQLdb.connect(host='localhost', user='', passwd='', db='test', charset='utf8') cursor = con.cursor() sql = "select * from user" cursor.execute(sql) results = cursor.fetchmany(5) users =

  • MySql模糊查询json关键字检索方案示例

    目录 前言 方案一: 方案二: 方案三: 方案四(最终采用方案): 总结 前言 ​最近在项目中遇到这样一个需求:需要在数据表中检索包含指定内容的结果集,该字段的数据类型为text,存储的内容是json格式,具体表结构如下: CREATE TABLE `product` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品名称

  • mysql5.6及以下版本如何查询数据库里的json

    MySQL里面保存数据有时候会把一些杂乱且不常用的时候丢进一个json字段里面 下面说说mysql存储json注意那些格式吧: 1:注意保存是中文不要变成转码的,转码之后导致查询非常麻烦,压缩时候后面多带一个参数,方便不止一点点哟! json_encode(array(),JSON_UNESCAPED_UNICODE); 好处:这样查询的时候中文字符更好的匹配查询 2:字段统一    存的时候最好开始定好字段名称  ,开发一个大点的项目不可能一个人开发统一字段可以减少很多不需要的麻烦和字段不同意

  • MySQL中查询json格式的字段实例详解

    工作开发过程遇到一个需求:需要动态存储客户的姓名.手机号码.身份证.证件类型,意思是可能前端会传一个人或二个人或者三个人的信息是动态的不固定人数的四个字段(姓名.手机号码.身份证.证件类型). 前端页面如下: 我是使用List来接收前端传过来 json,mysql 用 varchar 来保存这个 json 数组 [{ "cardId": "110101199003072316", "cstName": "张双儿1", &quo

  • Mysql 查询JSON结果的相关函数汇总

    JSON 格式字段是 Mysql 5.7 新加的属性,不够它本质上以字符串性质保存在库中的,刚接触时我只了解 $.xx 查询字段的方法,因为大部分时间,有这个就够了,其他交给程序就行了,但是最近一些操作需要更复杂的查询操作,所以赶紧了解下更多的方法. JSON_EXTRACT(json_doc [,path]) 查询字段 mysql> set @j = '{"name":"wxnacy"}'; mysql> select JSON_EXTRACT(@j,

  • mysql json格式数据查询操作

    预设表名是 base_data , json列名是 json_value json_value的值是 {"ids":["a","b"],"datas":[{"name":"张三"}]} 那么查询语句应该是 select * from base_data where JSON_CONTAINS(json_value -> "$.ids", JSON_ARRAY('

  • MySQL全文索引、联合索引、like查询、json查询速度哪个快

    查询背景 有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775) 我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条 SELECT COUNT(*) FROM tmp_test_course WHERE `type`=5 AND del=2 AND is_leaf=1 我们在限定为上面类型的同时,还得包含下面任意一个编码(也就是OR查询) jy157768338177

  • Mysql将查询结果集转换为JSON数据的实例代码

    Mysql将查询结果集转换为JSON数据 前言学生表学生成绩表查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)将单个学生各科成绩转换为数组JSON串将数组串作为value并设置key两张表联合查询(最终SQL,每个学生各科成绩)最终结果 前言 我们经常会有这样一种需求,一对关联关系表,一对多的关系,使用一条sql语句查询两张表的所有记录,例:一张学生表,一张学生各科成绩表,我们想要用一条SQL查询出每个学生各科成绩: 学生表 CREATE TABLE IF NOT EXISTS `stu

  • mysql查询字段类型为json时的两种查询方式

    表结构如下: id varchar(32) info json 数据: id = 1 info = {"age": "18","disname":"小明"} -------------------------------------------- 现在我需要获取info中disanme的值,查询方法有: 1. select t.id,JSON_EXTRACT(t.info,'$.disname') as disname fro

  • Mysql 直接查询存储的Json字符串中的数据

    我们平时使用mysql,出于项目需求,可能需要直接将Java对象或者一个大json,直接存到表中的某个字段中:使用的时候再查出来,反序列化到对象或者一个Map中,方便我们操作: 大多时候,我们可能并不需要所有的数据,只想使用这个对象或者json中的某一个值,来做逻辑判断而已 那我们可以这样做,例如:原来我们需要查出某个字段的数据,然后反序列化成对象再调用其中的一个属性 SELECT content FROM table_name WHERE id = 32; 查询结果:列名:content结果:

  • 如何修改json字符串中某个key对应的value值

    字符串转json ,下面这种方式会把原有的字符串顺序打乱,所以不采用 JSONObject jsonObject = JSON.parseObject(你的JSON); 要先转为LinkedHashMap,再转json LinkedHashMap<String, Object> json = JSON.parseObject(你的JSON,LinkedHashMap.class,Feature.OrderedField); JSONObject jsonObject=new JSONObjec

  • PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠

    通过AJAX传到PHP的json字符串有时候加上反斜杠"\"来转义,PHP处理时需要先去掉反斜杠,然后再json_decode. $str = stripslashes($_POST['json']); $arr = json_decode($str,true); PS:php get抓取json怎样去除双引号前面的反斜杠 你这个不算标准的JSON格式数据,可以先将\"替换成"即可. 再用json_decode()系统函数将其转为json对象,如需转为数组加上第二个

  • Mysql字符串截取及获取指定字符串中的数据

    前言:本人遇到一个需求,需要在MySql的字段中截取一段字符串中的特定字符,类似于正则表达式的截取,苦于没有合适的方法,百度之后终于找到一个合适的方法:substring_index('www.sqlstudy.com.cn', '.', -2) 强烈推荐该方法获取含有特定字符的数据. substring_index(input,split,index):input为要截取的字符,split为分隔符,Index为要截取第index个分隔符左(index为正)或右(index为负)的字符串. 拿个

  • 如何修改JSON字符串中的敏感信息

    目录 修改JSON字符串中的敏感信息 项目要求把json字符串里面的敏感信息加密 清除敏感字符串内容 分析 解决思路 修改JSON字符串中的敏感信息 项目要求把json字符串里面的敏感信息加密 比如手机号身份证之类,这就要求遍历json,并且覆盖所有的敏感key,原本以为挺难的,静下心来想了想,代码修修改改大约一个小时搞定了,其实是一个简单的递归,跟遍历一个目录并输出所有文件名一样 废话少说,直接贴代码和测试用例. package com.ucredit.test; import com.ali

  • Python 结构化字符串中提取数据详情

    目录 前言 从结构化字符串中提取数据 字符串解析 前言 在许多自动化任务中,我们都需要从已知格式结构化的输入文本中提取相关信息.例如,我们可能需要在一段电影评论数据中提取观影时间.电影名.评分等信息,以便存储后进行进一步分析.在本节中,我们将以提取电影评论数据信息为例讲解如何从结构化字符串中提取数据. 从结构化字符串中提取数据 假设我们具有以下结构的电影评分数据,我们需要解析存储观影时间.电影名.评分等信息: [<Timestamp>] - MOVIE ID: <movie id>

  • Spring Boot 从静态json文件中读取数据所需字段

    •在实体中,通常使用类似字典表的文件来表示属性,文件大都配置在配置文件中,也可以是静态文件,本次记录如何从静态json文件中读取所需字段. 1.文件格式以及路径 2.加载文件 import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @Value("classpath:static/data/area.json") private Res

  • Vue中如何获取json文件中的数据

    目录 场景 实现 场景 访问百度音乐API需要传递音乐类型参数,而这些参数是存在musictype.json中, 现在在组件listcate.vue需要获取json数据. json文件内容: 文件位置: 实现 musictype.json { "currentType":[1,2,11,21,22,23,24,25] } listcate.vue <template lang="html"> <div> <ListCate_List v

  • Java如何从json字符串中获取某个值详解

    目录 Java从json串中获取某个值 使用org.json进行解析 使用com.alibaba.fastjson进行解析 总结 Java从json串中获取某个值 java对象是不能直接传输,只有json对象 转成字符串 可以进行传输 故 传输中都是json进行的 接收到json数据之后java在进行解析转换成为字符串.且json适用于很多语言之间的传输 json本质上就是一个map. 对应有两种json进行解析 首先就是先对json的合法性进行验证 是否可以进行解析 点击这里 进行json解析

  • JS遍历Json字符串中键值对先转成JSON对象再遍历

    1.将Json字符串转换成JSON对象 var t='{"firstName": "cyra", "lastName": "richardson"}'; var obj = eval('(' + t + ')'); 2.遍历读取键值对 for(var str in obj){ alert(str+'='+obj[str]); }

随机推荐