mysql之使用json
从mysql 5.7开始才有
创建表(含有json类型)
CREATE TABLE `emp_details` (
`emp_no` int(11) NOT NULL,
`details` json DEFAULT NULL,
PRIMARY KEY (`emp_no`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
插入json
INSERT into emp_details (emp_no,details) VALUES ( '1','{"location":"IN","phone":"+15615645656",
"email":"abc@example.com","address":{"line1":"abc","line2":"xyz street","city":"Beijing"}}');
检索json
SELECT emp_no,details->'$.address.city' city FROM emp_details; 或者
SELECT emp_no,details->>'$.address.city' city FROM emp_details;

-> 查询结果有引号
->> 查询结果无引号
json函数
查找
SELECT emp_no FROM emp_details WHERE details->>'$.address.city' = 'Beijing';

也可以使用json_contains函数查询数据,如果找到了数据,则返回1,否则返回0
SELECT json_contains(details->'$.address.line1','"abc"') FROM emp_details

查找一个key,这里one表示至少存在一个键,如果找到了数据,则返回1,否则返回0
SELECT json_contains_path(details,'one','$.address.city') FROM emp_details

SELECT json_contains_path(details,'one','$.address.city','$.address.cit') FROM emp_details
我的数据没有address.cit这个键,但是有address.city,所有返回1

当然,如果要检查是否同时存在,则可以把one换成all
修改
json_set:替换现有值并添加不存在的值
UPDATE emp_details SET details = json_set(details,"$.address.line1","abcd","$.nickname","kai")

json_insert:不能替换现有值,可以添加不存在的值
json_replace:仅替换现有值
删除
json_remove
UPDATE emp_details SET details=json_remove(details,"$.nickname") WHERE emp_no = 1
仍然用update!
其他函数
json_keys:获取所有键
SELECT json_keys(details) FROM emp_details WHERE emp_no = 1

json_length:获取所有键的数量
SELECT json_length(details) FROM emp_details WHERE emp_no = 1

mysql之使用json的更多相关文章
- 关于mysql中存储json数据的读取问题
在mysql中存储json数据,字段类型用text,java实体中用String接受. 返回前端时(我这里返回前端的是一个map),为了保证读取出的数据排序错乱问题,定义Map时要用LinkedHas ...
- 一些应该使用mongodb或者其他文档存储而不是redis或mysql、oracle json的情形(最近更新场景)
通常来说,我们应该使用应用的特性而不是自己的爱好或者规定而去选择一种合适的组件,选择的标准应该是这个组件最适合或者本身其设计就是为了解决这个问题,而不是这个组件能够做这事情为标准.就拿存储来说,任何时 ...
- mysql 5.7 json 字段类型查找、修改
修改 json 里的数组字段 mysql> set @json = '{"test": [{"name": "laravel"}, { ...
- Mysql中的JSON系列操作函数
前言 JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写.对机器来说易于解析和生成,并且会减少网络带宽的传输. JSON的格式非常简单:名称/ ...
- python向mysql中存储JSON及Nodejs取出
虽然把JSON数据存入mysql也是比较蛋疼,但是相比使用Nodejs嵌套处理多个mysql查询并拼接返回数据也算是没mongo时的一个折中方案了. 我使用python拼接了一个json格式的字符串, ...
- mysql 5.7 json
项目中使用的mysql5.6数据库,数据库表一张表中存的字段为blob类型的json串数据.性能压测中涉及该json串处理效率比较低,开发人员提到mysql5.7版本后json串提供了原生态的json ...
- php查询mysql中的json编码后的字符串内容的方法
问题 mysql里存的是json编码后的字符串,其中中文会被转为unicode码,所以直接查询是查询不到的. mysql里的查询如 like "%\u6211\u662f%" 也是 ...
- MySQL中的JSON类型
前言(废话) 昨天抽了点时间在网上搜列了一个开源项目,项目挺完整的,前后台分离还带有微信小程序,我Clone下代码,经过一番倒腾,嘿~还真就跑起来了.在这个过程中,体验了一把VUE项目工程细节,因为之 ...
- Dapper操作MySQL数据库获取JSON数据中文乱码
前言 在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. Dapper获取J ...
随机推荐
- 执行scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb命令时一直报错:
Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /u ...
- 一百二十六:CMS系统之轮播图管理页面布局和添加轮播图的模态对话框制作
视图 @bp.route('/banners/')@login_required@permission_required(CMSPersmission.POSTER)def banners(): re ...
- Python-sympy科学计算与数据处理(方程,微分,微分方程,积分)
方程 a,b,c,x = symbols("a b c x") my_eq = Eq(a*x**2+b*x+c,0) solve(my_eq,x) Out[12]: [(-b + ...
- 20190521 - macOS 中显示隐藏文件的快捷键
macOS 中显示隐藏文件,以前总是借助于命令行或第三方软件,其实有一个快捷键: shift + cmmand + .
- 浏览器F12功能键对测试工程师的重要性
F键,功能键,Function键.F12常用于网站界面测试.调试,分析网页所出现的问题,查看html元素.查看响应事件等方面. 打开一个网页,点击F12,弹出一个窗口,其窗口的功能如下: 1 Elem ...
- js有序数组中插入一个元素,并有序的输出
题目:比较传入函数的参数,将参数组成数组,从小到大排序,返回新的数组. 如: insert();console.log(arr); //[] insert(-1,-2); console.log(ar ...
- Web后台管理系统
开发语言:C# 数据库:sql2008 登录页面 后台管理首页 部分操作页面 后台管理系统,界面简洁,大方,操作简单,所有功能可定制开发. 后台管理系统制作 如果您有需要后台管理系统制作,请扫描添加微 ...
- pandas中对日期型数据进行处理
因为数据不方便展示,直接上代码. 将字符串转为datetime64[ns]格式: pd.to_datetime('2019-12-20') or pd.to_datetime('20191220') ...
- Shell脚本无限调用
#! /bin/bash # this shell can run endlessfully echo "i love you ! " sh ./run 通过echo来显示了无限调 ...
- 《精通并发与Netty》学习笔记(02 - 服务端程序编写)
上节我们介绍了开发netty项目所必需的开发环境及工具的使用,这节我们来写第一个netty项目 开发步骤 第一步:打开https://search.maven.org 找到netty依赖库 第二步:打 ...