zoukankan      html  css  js  c++  java
  • MySql操作Json字段

    MySql json字段操作函数

    分类函数描述
    创建json json_array 创建json数组
      json_object 创建json对象
      json_quote 将json转成json字符串类型
    查询json json_contains 判断是否包含某个json值
      json_contains_path 判断某个路径下是否包json值
      json_extract 提取json值
      column->path json_extract的简洁写法,MySQL 5.7.9开始支持
      column->>path json_unquote(column -> path)的简洁写法
      json_keys 提取json中的键值为json数组
      json_search 按给定字符串关键字搜索json,返回匹配的路径
    修改json json_append 废弃,MySQL 5.7.9开始改名为json_array_append
      json_array_append 末尾添加数组元素,如果原有值是数值或json对象,则转成数组后,再添加元素
      json_array_insert 插入数组元素
      json_insert 插入值(插入新值,但不替换已经存在的旧值)
      json_merge 合并json数组或对象
      json_remove 删除json数据
      json_replace 替换值(只替换已经存在的旧值)
      json_set 设置值(替换旧值,并插入不存在的新值)
      json_unquote 去除json字符串的引号,将值转成string类型
    返回json属性 json_depth 返回json文档的最大深度
      json_length 返回json文档的长度
      json_type 返回json值得类型
      json_valid 判断是否为合法json文档

    一、查询json字段中某一个对象

    SELECT id,jsontest,jsontest->'$.row' as row1,jsontest->'$.celldata' as celldata FROM `test`

     字符串返回的不同

    SELECT id,jsontest,jsontest->'$.name' as name1, jsontest->>'$.name' as name2 FROM `test` where id=1

    查询时,不返回指定字段

     

    SELECT id,json_remove(jsontest,"$.cell") from test where id=2;

    二、更新json

    update test set jsontest=json_set(jsontest,"$.x","vv")  where id=2;

    update test set jsontest=json_set(jsontest,"$.x.z","bb")  where id=2;

    替换整个对象

    update test set jsontest=json_set(jsontest,"$.x",JSON_OBJECT("a","a1","b","b1"))  where id=2;

    更新多个key

    update test set jsontest=json_set(jsontest,"$.k2","1"), jsontest=json_set(jsontest,"$.k","2")  where id=2;

    替换数组

    update test set jsontest=json_set(jsontest,"$.x",JSON_Array("a1","a2","a3"))  where id=2;

    插入数据组(对象为json字符串)

    update test set jsontest=json_array_append(jsontest,"$.cell",CAST('{"r": 1, "v": "v1"}' as JSON))  where id=2;

     

    三、删除json

    update test set jsontest=json_remove(jsontest,"$.x.a")  where id=2;

    update test set jsontest=json_remove(jsontest,"$.x")  where id=2;

    四、数组处理

    示例:{"k": "vv", "cell": [{"r": 1, "v": "v1"}]}

    update test set jsontest=json_array_append(jsontest,"$.cell",json_object("r",1, "v", "v1"))  where id=2;

    插入到数组0

    update test set jsontest=json_array_insert(jsontest,"$.cell[0]",json_object("r",2, "v", "v2"))  where id=2;

    去除位置为1

    update test set jsontest=json_remove(jsontest,"$.cell[1]")  where id=2;

    更新集合位置x的对象中key的值 

    update test set jsontest=json_set(jsontest,"$.cell2[1].r",CAST('{"ct":"test","v":1,"m":"1222"}' as JSON))  where id=2;

    四、CAST使用

    更新中

    update test t set t.jsontest=json_set(t.jsontest,"$.x",CAST('{"a":"b"}' as JSON))  where id=2;

    查询中

    SELECT t.jsontest->>'$.cell', CAST(t.jsontest->>'$.cell' AS JSON) from test t where t.id=2;

  • 相关阅读:
    layui分页获取数据,回显checkbox
    批量选中 及下载
    Module Federation原理剖析
    EMP-面向未来微前端方案正式开源了!
    Vue3 也能用上 Vue2 组件 From EMP
    对比多种微前端方案
    EMP微前端之教你如何搭建共享站
    EMP微前端实战之cocos2d线上项目
    微前端是什么,可以带来什么收益
    Elasticsearch操作实践手册|建议收藏篇
  • 原文地址:https://www.cnblogs.com/xuchen0117/p/14296422.html
Copyright © 2011-2022 走看看