mysql 如何生成sql取json中的字段值格式的数据(使用sql语言,只要mysql)?

因为项目需要,存储字段存储成了JSON格式,在项目中是将查询出来的值通过jackson转成相应的bean进行处理的,觉得不够简单方便。

 对于某一列是json而言,需要使用内置的函数 json_extract(列名,'$.key') 这个函数有2个参数,第一个参数是json列的列名,第二个参数$.key 其中key为json字符串中某一个key。


来源于网络,只是收集方便以后查找!从mysql 5.7开始支持json字段类型,sqlserver2016版本开始支持json字段,这是一种非常好用的格式!

一、创建有json字段的表

1.插入含有json数组的记录

2.插入含有json对象的记录

//生成一个包含指定元素的json数组。

//生成一个包含指定K-V对的json object。如果有key为NULL或参数个数为奇数,则抛错。

//查询json文档是否在指定path包含指定的数据,包含则返回1,否则返回0。如果有参数为NULL或path不存在,则返回NULL。

//查询是否存在指定路径,存在则返回1,否则返回0。如果有参数为NULL,则返回NULL。

//one_or_all只能取值”one”或”all”,one表示只要有一个存在即可;all表示所有的都存在才行。

//从json文档里抽取数据。如果有参数有NULL或path不存在,则返回NULL。如果抽取出多个path,则返回的数据封闭在一个json array里。

//获取json文档在指定路径下的所有键值,返回一个json array。如果有参数为NULL或path不存在,则返回NULL。

//查询包含指定字符串的paths,并作为一个json array返回。如果有参数为NUL或path不存在,则返回NULL。

//one_or_all:”one”表示查询到一个即返回;”all”表示查询所有。

//search_str:要查询的字符串。 可以用LIKE里的’%’或‘_’匹配。

//在path指定的json array元素插入val,原位置及以右的元素顺次右移。如果path指定的数据非json array元素,则略过此val;如果指定的元素下标超过json array的长度,则插入尾部。

//在指定path下插入数据,如果path已存在,则忽略此val(不存在才插入)。

//替换指定路径的数据,如果某个路径不存在则略过(存在才替换)。如果有参数为NULL,则返回NULL。

//设置指定路径的数据(不管是否存在)。如果有参数为NULL,则返回NULL。

//移除指定路径的数据,如果某个路径不存在则略过此路径。如果有参数为NULL,则返回NULL。

返回json值属性的函数

//获取json文档的深度。如果参数为NULL,则返回NULL。

//获取指定路径下的长度。如果参数为NULL,则返回NULL。 

//获取json文档的具体类型。如果参数为NULL,则返回NULL。

//判断val是否为有效的json格式,是为1,不是为0。如果参数为NUL,则返回NULL。

是否包含特定对象的JSON文档路径
无论是JSON文件包含任何数据路径
JSON文档的最大深度
从JSON文档返回数据
将数据插入到JSON文档
从JSON文件密钥数组
在JSON文档中的元素数
合并的JSON文件,免去重复键的值
合并的JSON文件,保存重复键
版画在人类可读的格式JSON文档,每个数组元素或对象成员打印在新的行中,缩进两个空格就其母。
从JSON文件中删除数据
在JSON文件的值替换
在JSON文件价值路径
将数据插入到JSON文档
用于一个JSON文件的二进制表示形式存储空间;一个JSON柱,空间时使用的文档插入到任何部分更新之前,
JSON值是否是有效的

1、Mysql数据库对应数据

#不等于空,当前属性不为空 #等于空,当前属性为空 #左Like查询 没找到使用方式 #右Like查询 没找到使用方式 #Text字段添加索引

如果你JSON一面存的是数组的话,就要用对应的函数了。

我要回帖

更多关于 sql取json中的字段值 的文章

 

随机推荐