SELECT json_extract(字段名,'$.json结构') FROM 表名;
如果json里有双引号,那这样取出来的数据也带双引号,要去掉就使用REPLACE函数
例如:
ps_push_data表里的push_data字段存的数据为:{"carRenewalInfoVo":{"licence":"浙AF55Z0"},"code":"1","msg":"成功"}
使用sql
SELECT REPLACE(json_extract(push_data,'$.carRenewalInfoVo.licence'),'"','') FROM ps_push_data;
取出来的就是:浙AF55Z0
值得注意的是,只有MySQL5.7及以上版本才支持json数据的操作
SELECT json_extract(字段名,'$.json结构') FROM 表名;如果json里有双引号,那这样取出来的数据也带双引号,要去掉就使用REPLACE函数例如:ps_push_data表里的push_data字段存的数据为:{"carRenewalInfoVo":{"licence":"浙AF55Z0"},"code":"1","msg":"成功"
有一个表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查询)
jy1577683381775
jy1577683380808
jy1577683379178
jy15776833786
使用
字段
->’$.
json
属性’ 进行查询条件
使用
json
_extract函数查询,
json
_extract(
字段
,"$.
json
属性")
根据
json
数组查询,用
JSON
_CONTAINS(
字段
,
JSON
_OBJECT(‘
json
属性’, “内容”))
MySQL
5.7以上支持
JSON
的操作,以及增加了
JSON
存储类型
一般数据库存储j...
CREATE TABLE rules_
json
(
id INT PRIMARY KEY AUTO_INCREMENT,
sys_name VARCHAR(16) NOT NULL unique,
rules
JSON
,
create_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
第二步:创建
我们平时使用
mysql
,出于项目需求,可能需要直接将Java对象或者一个大
json
,直接存到表中的某个
字段
中;使用的时候再查出来,反序列化到对象或者一个Map中,方便我们操作;
大多时候,我们可能并不需要所有的数据,只想使用这个对象或者
json
中的某一个值,来做逻辑判断而已
那我们可以这样做,例如:原来我们需要查出某个
字段
的数据,然后反序列化成对象再调用其中的一个属性
SELECT content FROM table_name WHERE id = 32;
工作开发过程遇到一个需求:需要动态存储客户的姓名、手机号码、身份证、证件类型,意思是可能前端会传一个人或二个人或者三个人的信息是动态的不固定人数的四个
字段
(姓名、手机号码、身份证、证件类型)。
前端页面如下:
想对exec_rule_value里的
json
进行查询,SQL如下:
SELECT * FROM purchaser_rule_config where exec_rule_value -> '$.order_receive_remind.value' = '1';
以下部分内容转载自:https://blog.csdn.net/Code_shadow...
最近发现
mysql
强大的功能,可以直接查询出整个
json
中具体某个值的数据:
json
对应的
字段
内容是这样的:
msg_content对应的内容就是
json
字段
:
"fileName":"测非编1.mp4",
"filePath":"/mnt/windows/folderscan/uploadAndTask/91/测非编1.mp4",
"taskName":"截取首帧失败",
"taskFailStage":"1"
原始数据是这样的:
SELECT
json
表里面有个content
字段
数据如下面的
Json
格式
{"eq":{"f_1360040399":"admin","f_3038116851":"20","f_318208994":"admin@localhost.com"}}
需要对其中的f开头的
Json
key值所对的value进行模糊查询,方法如下:
select * from table where content->'$.
在js中接收返回值,比如value之后,把
json
转换成对象
var
json
=
JSON
.parse(value);
下面是论坛里面的大神,帮我写的两种搜索
json
串的方法,在这里记下来,以免忘记
第一种(功能类似select age from
json
where id = 1):
var jso
SELECT b.name,t.name as stage_name,
json
_extract(employee,'$.reward') as reward FROM zb_stage t
join zb_battle b on(b.id=t.battle_id)
WHERE t.`status` = 4
ORDER BY t.battle_id asc
activity_id
battle_id
start_time
可以使用
MySQL
中的
JSON
_CONTAINS函数来判断
JSON
字段
是否包含某个值。该函数有两个参数,第一个参数是要查询的
JSON
字段
,第二个参数是要
查找
的值,如果
JSON
字段
包含该值则返回1,否则返回0。
例如,假设我们有一个表格名为"students",其中有一个
JSON
字段
为"info",我们想要查询出所有包含"math"科目的学生信息,可以使用以下SQL语句:
SELECT * FROM students WHERE
JSON
_CONTAINS(info, '"math"');
注意,第二个参数需要用双引号括起来,因为
JSON
格式中的字符串需要用双引号括起来。如果要查询的值是一个
JSON
对象或数组,需要使用
JSON
格式进行表示。