当前位置:Gxlcms > 数据库问题 > Mysql Json函数之更新 (四)

Mysql Json函数之更新 (四)

时间:2021-07-01 10:21:17 帮助过:9人阅读

本节中的函数将修改JSON值并返回结果。

  • JSON_APPEND(json_docpathval[, pathval] ...)

    将值附加到JSON文档中指定数组的末尾并返回结果。该功能JSON_ARRAY_APPEND() 在MySQL 5.7.9中已重命名别名JSON_APPEND()现在在MySQL 5.7中已弃用,在MySQL 8.0中已删除。

  • JSON_ARRAY_APPEND(json_docpathval[, pathval] ...)

    将值附加到JSON文档中指定数组的末尾并返回结果。返回 NULL是否有任何参数 NULL如果json_doc参数不是有效的JSON文档,或者任何path参数不是有效的路径表达式或包含 ***通配符,则会发生错误 

    路径值对从左到右评估。通过评估一对对生成的文档将成为新的价值,以此评估下一对。

    如果路径选择标量或对象值,则该值将自动包装在数组中,并将新值添加到该数组中。路径无法标识JSON文档中任何值的对将被忽略。

    mysql> SET @j = ‘["a", ["b", "c"], "d"]‘;
    mysql> SELECT JSON_ARRAY_APPEND(@j, ‘$[1]‘, 1);
    +----------------------------------+
    | JSON_ARRAY_APPEND(@j, ‘$[1]‘, 1) |
    +----------------------------------+
    | ["a", ["b", "c", 1], "d"]        |
    +----------------------------------+
    mysql> SELECT JSON_ARRAY_APPEND(@j, ‘$[0]‘, 2);
    +----------------------------------+
    | JSON_ARRAY_APPEND(@j, ‘$[0]‘, 2) |
    +----------------------------------+
    | [["a", 2], ["b", "c"], "d"]      |
    +----------------------------------+
    mysql> SELECT JSON_ARRAY_APPEND(@j, ‘$[1][0]‘, 3);
    +-------------------------------------+
    | JSON_ARRAY_APPEND(@j, ‘$[1][0]‘, 3) |
    +-------------------------------------+
    | ["a", [["b", 3], "c"], "d"]         |
    +-------------------------------------+
    
    mysql> SET @j = ‘{"a": 1, "b": [2, 3], "c": 4}‘;
    mysql> SELECT JSON_ARRAY_APPEND(@j, ‘$.b‘, ‘x‘);
    +------------------------------------+
    | JSON_ARRAY_APPEND(@j, ‘$.b‘, ‘x‘)  |
    +------------------------------------+
    | {"a": 1, "b": [2, 3, "x"], "c": 4} |
    +------------------------------------+
    mysql> SELECT JSON_ARRAY_APPEND(@j, ‘$.c‘, ‘y‘);
    +--------------------------------------+
    | JSON_ARRAY_APPEND(@j, ‘$.c‘, ‘y‘)    |
    +--------------------------------------+
    | {"a": 1, "b": [2, 3], "c": [4, "y"]} |
    +--------------------------------------+
    
    mysql> SET @j = ‘{"a": 1}‘;
    mysql> SELECT JSON_ARRAY_APPEND(@j, ‘$‘, ‘z‘);
    +---------------------------------+
    | JSON_ARRAY_APPEND(@j, ‘$‘, ‘z‘) |
    +---------------------------------+
    | [{"a": 1}, "z"]                 |
    +---------------------------------+
  • JSON_ARRAY_INSERT(json_docpathval[, pathval] ...)

    更新JSON文档,将其插入文档中的数组并返回修改后的文档。返回 NULL是否有任何参数 NULL如果json_doc参数不是有效的JSON文档,或者任何path参数不是有效的路径表达式,或者包含 ***通配符,或者不以数组元素标识符结尾,则会发生错误 

    路径值对从左到右评估。通过评估一对对生成的文档将成为新的价值,以此评估下一对。

    路径无法标识JSON文档中任何数组的对将被忽略。如果路径标识数组元素,则将相应的值插入该元素位置,然后将所有后续值向右移动。如果路径标识了超出数组末尾的数组位置,则将值插入到数组末尾。

    mysql> SET @j = ‘["a", {"b": [1, 2]}, [3, 4]]‘;
    mysql> SELECT JSON_ARRAY_INSERT(@j, ‘$[1]‘, ‘x‘);
    +------------------------------------+
    | JSON_ARRAY_INSERT(@j, ‘$[1]‘, ‘x‘) |
    +------------------------------------+
    | ["a", "x", {"b": [1, 2]}, [3, 4]]  |
    +------------------------------------+
    mysql> SELECT JSON_ARRAY_INSERT(@j, ‘$[100]‘, ‘x‘);
    +--------------------------------------+
    | JSON_ARRAY_INSERT(@j, ‘$[100]‘, ‘x‘) |
    +--------------------------------------+
    | ["a", {"b": [1, 2]}, [3, 4], "x"]    |
    +--------------------------------------+
    mysql> SELECT JSON_ARRAY_INSERT(@j, ‘$[1].b[0]‘, ‘x‘);
    +-----------------------------------------+
    | JSON_ARRAY_INSERT(@j, ‘$[1].b[0]‘, ‘x‘) |
    +-----------------------------------------+
    | ["a", {"b": ["x", 1, 2]}, [3, 4]]       |
    +-----------------------------------------+
    mysql> SELECT JSON_ARRAY_INSERT(@j, ‘$[2][1]‘, ‘y‘);
    +---------------------------------------+
    | JSON_ARRAY_INSERT(@j, ‘$[2][1]‘, ‘y‘) |
    +---------------------------------------+
    | ["a", {"b": [1, 2]}, [3, "y", 4]]     |
    +---------------------------------------+
    mysql> SELECT JSON_ARRAY_INSERT(@j, ‘$[0]‘, ‘x‘, ‘$[2][1]‘, ‘y‘);
    +----------------------------------------------------+
    | JSON_ARRAY_INSERT(@j, ‘$[0]‘, ‘x‘, ‘$[2][1]‘, ‘y‘) |
    +----------------------------------------------------+
    | ["x", "a", {"b": [1, 2]}, [3, 4]]                  |
    +----------------------------------------------------+
    
                      
    
    	 	
                        
                        
                        
                        
                        
                    

人气教程排行