mysql 和mssql2016中的json字段相关操作
Mysql:
mysql中有专门的Json字段,不是通用的varchar字段,可以保存key/value对,也可保存value集合。
可以增加、删除、修改Json中的某一字段,查询时可以为条件。
如果想以Json中的某一个key为索引,则需要建立一个计算字段,然后对计算字段建立索引,这样可以加快查询速度。
SELECT id,ff->'$.name' from t1 where ff->'$.name' like 'mus%' --查不到数据
SELECT id,ff->'$.name' from t1 where ff->'$.name' != 'mus' --这个可以
SELECT id,ff->'$.name' from t1 where ff->'$.name' = 'mus' --字符串型,可以用=和!=查询,但不能用like
SELECT id,ff,ff->'$.name' from t1 where ff->'$.id' !=0 --数字型可以大于,小于,等于,不等查询
UPDATE t1 SET ff = JSON_SET(ff,'$.id', 30,'$.url','www.muscleape.com') WHERE id = 1; --更新时JSON_SET可以更新json内部数据,可增加入新的key
INSERT INTO t1 (ff) VALUES ('{"id": 2,"name": "mus"}'); --可以像文本一样写入
以下参考:
https://www.jianshu.com/p/6a9ca839c5b5
https://www.cnblogs.com/helww/p/9330593.html
https://blog.csdn.net/stpeace/article/details/88595700
https://blog.csdn.net/weixin_34265814/article/details/91439439
MSSQL2016开始支持:
没有Json字段,使用nvarchar(max)来保存Json数据。
使用json_modify函数来修改、增加、删除Json中的元素,索引方式和mysql一样使用计算列字段。
参考:
https://docs.microsoft.com/zh-cn/archive/msdn-magazine/2017/april/cutting-edge-query-json-data-in-sql-server-2016
https://www.cnblogs.com/wenBlog/p/5817842.html
https://blog.csdn.net/ahang10001/article/details/102110980
https://www.jb51.net/article/174210.htm
http://www.sohu.com/a/293454973_120083365
https://www.jianshu.com/p/34b77a0fba6d
mysql 和mssql2016中的json字段相关操作的更多相关文章
- Mysql查询语句中字符型字段不区分大小写解决方法
项目中和前端联调的时候,发现Mysql查询语句中字符型字段值过滤是不区分大小写的,之前没有关注过这个设置,特意去网上看了下,原因是Mysql中“COLLATE”属性区分大小写,而该属性默认值为“utf ...
- MySQL 库、表、记录、相关操作(3)
MySQL 库.表.记录.相关操作(3) 单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[, ..., 字段n])] values (数 ...
- grails项目中(DB的相关操作)
grails项目中(DB的相关操作) save:保存Domain对象的数据到对应的库表中(可能是insert也可能是update) findBy: 动态方法,查找并返回第一条记录,方法名可以变化 eg ...
- Mysql中处理JSON字段
处理json字段,可以用json_extract函数: select * from (select json_extract(ext_value,'$.high')+0 highx,batch_id ...
- mysql和SqlServer 中取得汉字字段的各汉字首字母
mysql 中取得汉字字段的各汉字首字母 这个转载于http://blog.csdn.net/lky5387/article/details/11973721 DELIMITER ;;CREATE ...
- MySQL 库、表、记录、相关操作(1)
库.表.记录.相关操作(1) 数据库配置 # 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再创建的 ...
- MySQL 库、表、记录、相关操作(2)
库.表.记录.相关操作(2) 字段操作 create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter ...
- Json概述以及python对json的相关操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- Json概述以及python对json的相关操作(转)
什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
随机推荐
- Flask基础原理
一.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架. Werkzeug的本质是Socket服务端,用于接收http请求并对请 ...
- Java 之 网络编程基础
一.软件结构 C/S 结构:全称为 Client/Server 结构,是指客户端和服务器结构.常见的程序有微信,QQ,迅雷等软件. B/S 结构:全称 Brower/Server 结构,是指浏览器和服 ...
- Java 之 IO流概述
一.IO 流 我们知道存在硬盘中数据是永久保存的,而在内存中的数据只是临时的,内存中的数据可以存入硬盘中,硬盘中的数据也也可以读入内存中. 我们把这种数据的传输,可以看做一种数据的流动,按照流动的方法 ...
- stm32 CAN通信 TJA1040
CAN协议特点 1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级.仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工 ...
- 修改docker容器端口映射的方法
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...
- 简单使用auth认证实现登录注册
1 添加路由 //注册 Route::get('/register',"RegisterController@index"); Route::post('/register',&q ...
- 七年开发小结MyBatis 在 Spring 环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题——另外,最近接触了JFin ...
- CentOS7安装CDH 第十二章:YARN的资源调优
相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...
- c# 类嵌套
- Vue框架之vuex的使用
1.首先需要在你的项目目录下安装vuex 终端命令: 2.在全局组件中导入与声明vuex 3.创建store实例对象 let store = new Vuex.store({ state:{ }, m ...