zoukankan      html  css  js  c++  java
  • mysql 5.7开始支持新的特性json啦!!!!

    tp框架里只有很简单的一点示例,没有办法,研究下mysql的原生写法吧。

    从Navicat 中找出来了所有有关json的函数,英文大写字母看着太难受,自己改成了小写,如下:

    json_set(json_doc, path, val[, path, val] ...) 将数据插入 JSON 文档
    json_keys(json_doc[, path]) 来自 JSON 文档的键数组
    json_type(json_val) JSON 值的类型
    json_array([val[, val] ...]) 创建 JSON 数组
    json_depth(json_doc) JSON 文档的最大深度
    json_quote(string) 将json转成json字符串类型
    json_valid(val) JSON 值是否有效
    json_insert(json_doc, path, val[, path, val] ...) 将数据插入 JSON 文档
    json_length(json_doc[, path]) JSON 文档中的元素数
    json_object([key, val[, key, val] ...]) 创建 JSON 对象
    json_pretty(json_val)
    json_remove(json_doc, path[, path] ...) 移除指定路径的数据,如果某个路径不存在则略过此路径。如果有参数为NULL,则返回NULL。
    json_search(json_doc, one_or_all, search_str[, escape_char[, path] ...]) 查询包含指定字符串的paths,并作为一个json array返回。如果有参数为NUL或path不存在,则返回NULL。
    json_extract(json_doc, path[, path] ...) 从json文档里抽取数据。如果有参数有NULL或path不存在,则返回NULL。如果抽取出多个path,则返回的数据封闭在一个json array里。
    json_replace(json_doc, path, val[, path, val] ...) 替换指定路径的数据,如果某个路径不存在则略过(存在才替换)。如果有参数为NULL,则返回NULL。
    json_unquote(json_val) 去掉val的引号。如果val为NULL,则返回NULL。
    json_contains(target, candidate[, path]) 查询json文档是否在指定path包含指定的数据,包含则返回1,否则返回0。如果有参数为NULL或path不存在,则返回NULL。
    json_arrayagg(col_or_expr)
    json_objectagg(key, value)
    json_merge_patch(json_doc, json_doc[, json_doc] ...)
    json_array_append(json_doc, path, val[, path, val] ...) 在指定path的json array尾部追加val。如果指定path是一个json object,则将其封装成一个json array再追加。如果有参数为NULL,则返回NULL。
    json_array_insert(json_doc, path, val[, path, val] ...) 在path指定的json array元素插入val,原位置及以右的元素顺次右移。如果path指定的数据非json array元素,则略过此val;如果指定的元素下标超过json array的长度,则插入尾部。
    json_storage_size(json_val)
    json_contains_path(json_doc, one_or_all, path[, path] ...) 查询是否存在指定路径,存在则返回1,否则返回0。如果有参数为NULL,则返回NULL。
    json_merge_reserve(json_doc, json_doc[, json_doc] ...)

    1、json_set

    如题,我们当前研究的是json一维数组,数据如下

     细心的小朋友一眼就看出来啦,没错,这是微信公众号粉丝。

    废话不多说,直接上才艺

    第一个函数json_array_append

    update tp_wechat_users set tagid_list=json_array_append(tagid_list,'$',107) where id=1;

    update tp_wechat_users set tagid_list=json_array_append(tagid_list,'$',108) where id=1;

     you know? 向json数组中插入一个值。

    第二个:json_array_insert 

    update tp_wechat_users set tagid_list=json_array_insert(tagid_list,'$[2]',102) where id=1;

     向数组的第三号位插入102,OK,就是这么简单,如果我们想在107和108之间插入101呢?

    update tp_wechat_users set tagid_list=json_array_insert(tagid_list,'$[1]',101) where id=1;

     Yeah! we did it!

    移除这里不是很开心,因为目前发现数组只能根据索引移除,如下

    update tp_wechat_users set tagid_list=json_remove(tagid_list,'$[1]') where id=1;

     只能这样,好像没找到根据101这个值去移除,没办法,先凑合用吧。

    哦对了,搜索

    select tagid_list from tp_wechat_users where json_contains(tagid_list,'[102]')

     如图所示,所有tagid_list中带有102的就都能搜索到了。

    暂时先记录这么多,先赶项目,等有时间再去深入研究。

    资料来源:https://blog.csdn.net/jiangyu1013/article/details/78917425

  • 相关阅读:
    牛人读书 列表
    设计模式 简介
    java 并发编程 list
    Spring Boot 概念知识
    JS原生Date类型方法的一些冷知识
    JavaScript 操作 Cookie
    nodeJS(express4.x)+vue(vue-cli)构建前后端分离详细教程(带跨域)
    Vue学习笔记(一)
    windows下常查看端口占用方法总结
    webstorm添加*.vue文件代码提醒支持webstorm支持es6vue里支持es6写法
  • 原文地址:https://www.cnblogs.com/dayin1/p/15550315.html
Copyright © 2011-2022 走看看