Mysql中处理Json

Mysql中处理Json

  • JSON_EXTRACT
select json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.tel");
返回结果 "13240133388"       
select json_extract('{"name":"Zhaim","tel":"13240133388"}',"$.name");
返回结果 "Zhaim"  
select json_extract(data,'$.name') from tab_json;
可以直接对 表 进行操作, 会自己寻找对应key没有则返回null

​ json_extract json提取,可以从json对象中直接提取特定key的值, “$.key”

  • INSERT

    INSERT INTO `t1` VALUES (1,'1','{"a":1, "b":"2"}');
    

    用自带的insert插入Json对象

  • JSON_OBJECT

INSERT INTO `t1` VALUES (1, '1', JSON_OBJECT("a", 1, "b", "2"));

​ json_object 生成一个json对象

  • JSON_ARRAY

    -- 插入json array到数据库
    INSERT INTO `t1` VALUES (2, '2', JSON_ARRAY("arr", 1, 2));
    -- [{"arr"},{1},{2}]
    
  • JSON_MERGE

    JSON_MERGE(
      	'{"a":3, "b":"3"}',
        '{"c":3, "d":"3"}',
      )
      
      JSON_MERGE(
      	JSON_OBJECT("a", 4, "b", "4"),
        JSON_OBJECT("c", 4, "d", "4")
      )
      
      JSON_MERGE(
      	'{"a":5, "b":"5"}',
        JSON_OBJECT("c", 5, "d", "5")
      )
    

    合并的三种情况

  • JSON_INSERT

    -- 让id=1的f2字段,增加age字段
    UPDATE `t1` SET f2 = JSON_INSERT(f2, '$.age', 10) WHERE id = 1;
    

    向Json中加入新的键值对 “age” = 10 , 若key存在,则不做任何操作

  • JSON_REPLACE

    -- 将id=1的f2字段中,age字段的值替换为9
    UPDATE `t1` SET f2 = JSON_REPLACE(f2, '$.age', 9) WHERE id = 1;
    

    替换Json中的键值对的值, 若key存在, 则不做任何操作

  • JSON_SET

    -- 将id=1的f2字段中,age字段的值设置为8
    UPDATE `t1` SET f2 = JSON_REPLACE(f2, '$.age', 8) WHERE id = 1;
    

    替换,若不存在则加入 , 相当于JSON_REPLACE + JSON_INSERT

  • JSON_REMOVE

    -- 将id=1的f2字段中,age字段移除
    UPDATE `t1` SET f2 = JSON_REMOVE(f2, '$.age') WHERE id = 1;
    

    移除指定字段

  • JSON_CONTAINS

    select * from dept WHERE JSON_CONTAINS(json_value, JSON_OBJECT("deptName","部门5"))
    -- json_value 中是否有字段包含 JSON_OBJECT("deptName","部门5"))
    
  • 其他情况

    -- 一般查询  语法: json对象名->'$.json属性名'
    SELECT * FROM `course_resource` WHERE region->'$.city'='宁波市'
    

猜你喜欢

转载自blog.csdn.net/weixin_43563956/article/details/125759166