MySQl Modify JSON Values

方法描述
JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)
JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)
JSON_INSERT(json_doc, path, val[, path, val] ...)
JSON_MERGE(json_doc, json_doc[, json_doc] ...)
JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)
JSON_REMOVE(json_doc, path[, path] ...)
JSON_REPLACE(json_doc, path, val[, path, val] ...)
JSON_SET(json_doc, path, val[, path, val] ...)
JSON_UNQUOTE(json_val)

1.JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)

SET @j = '["a", ["b", "c"], "d"]';
SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1); -- ["a", ["b", "c", 1], "d"];
SELECT JSON_ARRAY_APPEND(@j, '$[0]', 2); -- [["a", 2], ["b", "c"], "d"]
SELECT JSON_ARRAY_APPEND(@j, '$[1][0]', 3); -- ["a", [["b", 3], "c"], "d"]

SET @j = '{"a": 1, "b": [2, 3], "c": 4}';
SELECT JSON_ARRAY_APPEND(@j, '$.b', 'x'); -- {"a": 1, "b": [2, 3, "x"], "c": 4}
SELECT JSON_ARRAY_APPEND(@j, '$.c', 'y'); -- {"a": 1, "b": [2, 3], "c": [4, "y"]}

SET @j = '{"a": 1}';
SELECT JSON_ARRAY_APPEND(@j, '$', 'z'); -- [{"a": 1}, "z"]

2.JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)

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

3.JSON_INSERT(json_doc, path, val[, path, val] ...)

SET @j = '{ "a": 1, "b": [2, 3]}';
SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]'); -- {"a": 1, "b": [2, 3], "c": "[true, false]"} //注意a节点没有更新
SELECT JSON_INSERT(@j, '$.a', 10, '$.c', CAST('[true, false]' AS JSON)); -- {"a": 1, "b": [2, 3], "c": [true, false]} 

4.JSON_MERGE(json_doc, json_doc[, json_doc] ...)

SELECT JSON_MERGE('[1, 2]', '[true, false]');

5.JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)

SELECT JSON_MERGE_PATCH('[1, 2]', '[true, false]'); -- [true, false]
SELECT JSON_MERGE_PATCH('{"name": "x"}', '{"id": 47}'); -- {"id": 47, "name": "x"}
SELECT JSON_MERGE_PATCH('1', 'true');  -- true
SELECT JSON_MERGE_PATCH('[1, 2]', '{"id": 47}');  -- {"id": 47}
SELECT JSON_MERGE_PATCH('{ "a": 1, "b":2 }','{ "a": 3, "c":4 }','{ "a": 5, "d":6 }'); -- {"a": 5, "b": 2, "c": 4, "d": 6}
SELECT JSON_MERGE_PATCH('{"a":1, "b":2}', '{"b":null}'); -- {"a": 1}
SELECT JSON_MERGE_PATCH('{"a":{"x":1}}', '{"a":{"y":2}}'); -- {"a": {"x": 1, "y": 2}}  

6.JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)

SELECT JSON_MERGE_PRESERVE('[1, 2]', '[true, false]'); -- [1, 2, true, false]
SELECT JSON_MERGE_PRESERVE('{"name": "x"}', '{"id": 47}'); -- {"id": 47, "name": "x"}
SELECT JSON_MERGE_PRESERVE('1', 'true'); -- [1, true]
SELECT JSON_MERGE_PRESERVE('[1, 2]', '{"id": 47}'); -- [1, 2, {"id": 47}]
SELECT JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c": 4 }'); -- {"a": [1, 3], "b": 2, "c": 4}
SELECT JSON_MERGE_PRESERVE('{ "a": 1, "b": 2 }','{ "a": 3, "c": 4 }','{ "a": 5, "d": 6 }'); -- {"a": [1, 3, 5], "b": 2, "c": 4, "d": 6}

7.JSON_REMOVE(json_doc, path[, path] ...)

SET @j = '["a", ["b", "c"], "d"]';
SELECT JSON_REMOVE(@j, '$[1]'); -- ["a", "d"]

8.JSON_REPLACE(json_doc, path, val[, path, val] ...)

SET @j = '{ "a": 1, "b": [2, 3]}';
SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]'); -- {"a": 10, "b": [2, 3]}

9.JSON_SET(json_doc, path, val[, path, val] ...)

SET @j = '{ "a": 1, "b": [2, 3]}';
SELECT JSON_SET(@j, '$.a', 10, '$.c', '[true, false]');  -- {"a": 10, "b": [2, 3], "c": "[true, false]"}
SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]'); -- {"a": 1, "b": [2, 3], "c": "[true, false]"}
SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]'); -- {"a": 10, "b": [2, 3]}

10.JSON_UNQUOTE(json_val)

SET @j = '"abc"';
SELECT @j, JSON_UNQUOTE(@j);  -- "abc" | abc
SET @j = '[1, 2, 3]';
SELECT @j, JSON_UNQUOTE(@j); -- [1, 2, 3] | [1, 2, 3]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值