c 网站开发引擎wordpress 后台翻译
news/
2025/10/3 17:58:53/
文章来源:
c 网站开发引擎,wordpress 后台翻译,建设银行网站的安全措施,太仓网络公司一 前言MySQL 5.7.8 之后 支持 JSON (由rfc7159规定)数据类型#xff0c;其能在字段中使用json 类型#xff0c;做到了自动校验是否为json类型数据#xff0c;否则插入数据会报异常#xff1b;其次#xff0c;储存json数据内部做到了优化储存#xff0c;能够快速读取json…一 前言MySQL 5.7.8 之后 支持 JSON (由rfc7159规定)数据类型其能在字段中使用json 类型做到了自动校验是否为json类型数据否则插入数据会报异常其次储存json数据内部做到了优化储存能够快速读取json类型数据比如无需将二进制json转为文本形式后读取公众号知识追寻者知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)二 操作 JOSN建表语句如下为 area 字段 声明为 JSON 类型CREATE TABLE order (id int(11) NOT NULL AUTO_INCREMENT COMMENT 订单编号,order_name varchar(255) DEFAULT NULL COMMENT 订单名称,create_time datetime DEFAULT NULL COMMENT 创建时间,year year(4) DEFAULT NULL COMMENT 年份,area json DEFAULT NULL COMMENT 地区,PRIMARY KEY (id),UNIQUE KEY order_name (order_name,create_time)) ENGINEInnoDB AUTO_INCREMENT9 DEFAULT CHARSETutf8;MySQL 中支持 json 对象 和json 数组他们之间可以相互嵌套json类似map在java中json就是map得实现类初学者若不懂何为json就当作map来用即储存 key - value 形式得数据结构注意点是 json 数据 得key 必须是字符串可以有key无value2.1 插入 josn数据插入 json 对象east 得值 为 50 sourth 值为65 得 json对象INSERT INTO order(order_name, year, area)VALUES (荷小花的订单, 2020, {east: 50, south: 65});等效于使用 JSON_OBJECT 函数 示例如下INSERT INTO order(order_name, year, area)VALUES (荷小花的订单, 2020, JSON_OBJECT(east, 50, south, 65));插入 json 数组INSERT INTO order(order_name, year, area)VALUES (荷小花的订单, 2020, [{east: 50, south: 65}]);等效于使用 JSON_ARRAY 函数示例如下INSERT INTO order(order_name, year, area)VALUES (荷小花的订单, 2020, JSON_ARRAY(east, 50, south, 65));2.2 查询json数据使用 column - path 路径符 - 查询 指定key 得值select order_name, area - $.east from order注意如果json 数据中不存在 east 得键则列出为null值输出如下--------- ------荷小花的订单50荷小花的订单也可以使用 - 符号, 不同之处是使用 - 更加直观输出得json数据最外层不会携带双引号内层数据中存在双引号不会有反斜杠转义select order_name, area - $.east from order使用 单引号 代替 双引号select order_name, area - $.east from order我们 也可以使用 JSON_EXTRACT 函数 达到同样得效果SELECT order_name,JSON_EXTRACT(area, $.east) from order;2.3 修改json数据使用 JSON_SET 设置 json key 得 值id 1 得 area 数据如下{north: 55, south: 66}现在将south 值改为 60 的语句示例如下update order set area json_set(area, $[0].south, 60) where id 1其中 $[0] 代表 json 中的第一个对象 ,以此类推 $[1] 为 josn 中的第二个对象示例[6,2,{east: 50, south: 65}]$[0] 为6$[1] 为 2 , $[2] 为 {east: 50, south: 65}; $[2].east 为 50 , 或者 $[2][1];如果上面$[*] 表达式式理解困难也可以使用如下方式update order set area json_set(area, $.south, 60) where id 1tip: 如果更改整个json值 与 平时的更新数据方式一致2.4 删除json中的数据使用 json_remove 可以达到效果示例: 删除json 中的 south 键update order set area json_remove(area, $.south) where id 1三 jsom函数3.1 castcast 函数 是特殊函数可以使用 CAST(expr AS type) 函数进行数据类型得转换此函数 与 convert 用法 类似 即 期望得表达式转为期望得类型比如 将 字符串 知识追寻者从默认类型转为utf8类型SELECT CONVERT(知识追寻者 USING utf8);如下情况下查询是字符串非json数据select {east: 50, south: 65} as str再来看看 cast 函数使用将字符串转为json 类型select cast( {east: 50, south: 65} as json )3.2 JSON_TYPEJSON_TYPE 函数 会尝试 去解析 参数为json值示例select JSON_TYPE({east: 50, south: 65})得到结果为json 对象OBJECT示例select JSON_TYPE([{east: 50, south: 65}])得到结果为json数组ARRAY示例select JSON_TYPE(hello)输出为异常无效得jsonInvalid JSON text in argument 1 to function json_type: Invalid value. at position 0.3.3 JSON_MERGEJSON_MERGE 函数 即 将合并多个json文档 合并规则如下如果都是json array合并为json array如果都是json object合并为json object如果有多种类型数据则将非json array的元素封装成json array再按照如上规则进行合并示例select json_merge([west,20], {east: 50, south: 65})输出[west, 20, {east: 50, south: 65}]3.4 JSON_VALIDJSON_VALID 函数 为 校验是否是json 函数是返回 1 否则 返回0示例如下返回1SELECT JSON_VALID({east: 50, south: 65})示例如下返回 0SELECT JSON_VALID(hello)3.5 JSON_INSERTJSON_INSERT 函数 向 json 中添加新的值不会改变已经存在的值id 1 的数据如下{north: 55}更新语句如下update order set area JSON_INSERT(area, $.north, 55 ,$.south, 60) where id 1更改结果如下{north: 55, south: 60}3.6 JSON_REPLACEJSON_REPLACE 替换现有的值如果存在新的值不会添加id 1 的数据如下{north: 55, south: 60}更新语句如下update order set area JSON_REPLACE (area, $.north, 50 ,$.east, 60)where id 1更改结果如下{north: 50, south: 60}3.7 JSON_SEARCHJSON_SEARCH 返回路径支持返回单个和返回多个id 1 的数据如下[{north: 50, south: 60}, {north: 50, south: 70}]查询 一个值为 50 的key路径select JSON_SEARCH(area, one, 50) from order where id 1输出$[0].north查询 所有值为 50 的key路径select JSON_SEARCH(area, all, 50) from order where id 1输出[$[0].north, $[1].north]3.8 JSON_KEYS返回json顶级值底下所有keyid 1 的数据如下[{north: 50, south: 60}, {north: 50, south: 70}]查询json数据中第一个json对象所有的keyselect JSON_KEYS(area, $[0]) from order where id 1输出[north, south]
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926156.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!