函数:JSON_EXTRACT(json字段列名,"$.json属性名")
Mysql中表设计中某些预留字段,可扩展字段json字段,json中属性获取函数:
select JSON_EXTRACT(json字段的名称,"$.json的属性1") as '别名' from db_name;
CREATE TABLE `student` (
`sid` varchar(100) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`expand` json DEFAULT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Student'
插入数据:
INSERT INTO amall_crawler.student (sid,name,expand) VALUES
('1001','xiaoliu','{"sex": "man", "hobby": ["游泳", "打乒乓"], "address": {"detail": "某某小区某某栋0001", "city": "某某市"}}');
1) 单层属性值获取---获取expand的json字段中sex属性的值:
JSON_EXTRACT(字段名,"$.json属性名")
2) 多层属性值获取---获取expand的json字段中address属性下detail属性的值:
JSON_EXTRACT(JSON_EXTRACT(字段名,"$.json属性名1"),"$.json属性名2")
select
name,
JSON_EXTRACT(expand,
"$.sex") as 'sex',
JSON_EXTRACT(JSON_EXTRACT(expand, "$.address"),
"$.detail") as 'addressDetail'
student;
使用JSON_EXTRACT查出的json串中String类型的属性值,会带双引号,可以用replace函数将其替换掉
3) json字段的属性作为查询条件时,查询方式:
查询出sex = man的数据
select * from student where JSON_EXTRACT(expand,"$.sex") = 'man';
我们有一个日志表,里面的data
字段
是保存不同对象的
json
数据,遇到想根据里面的
json
的
字段
内容
作为
条件
查询的情况
#
mysql
根据
json
字段
的
内容
检索查询数据
mysql
5.7以上支持
json
的操作,以及增加了
json
存储
类型
一般
数据库
存储
json
类型
的数据会用
json
类型
或者text
类型
查询根据表
字段
的
json
内容
进行查询
1. 创建表
. 1)使用
字段
->'$.
json
属性
'进行查询
条件
2)使用
json
_
extract
函数查询,
json
_
extract
(
字段
,
若
获取
的val本身为字符串,那么
获取
的val会被引号包起来,比如"tom",这种数据被解析到程序对象
中
时,可能会被转义为\“tom\”。与
获取
key-val一样,若
获取
的元素为字符串,默认的方式也会得到双引号包起来的字符,导致程序转义,方法也是利用
json
_unquote函数,或者使用 ->> 代替->
json
_
extract
函数
中
,第一个参数content表示
json
数据,第二个参数为
json
路径,其
中
。结合前面介绍的两种
获取
方式,可以
获取
json
数据
中
的嵌套数据。将会把多个路径的数据组合成数组返回。
"access_token": "333d8c09-e522-4585-8cca-1d9c66e5cece",
"token_type": "bearer",
"refresh_token": "48a3e598-0e3e-4739-9e57-b301c1e3529d",
"expire.
Json
简介
Json
(JavaScript Object Notation)这因为
Json
是一种轻量级的数据交换
格式
,具有数据
格式
简单,读写方便易懂等很多优点。用它来进行前后端的数据传输,大大的简化了服务器和客户端的开发工作量。而且相对于XML来说,更加的轻量级,更方便解析。今天我们讲讲如何在python里玩转
Json
数据?在
Json
中
,遵循“key-value”的这样一种方式。比如最简单的这种:...