JSON_REMOVE()

JSON_REMOVE(json, path…) 删除位于一个或多个 JSON 路径处的值并返回结果文档,路径不存在时保持原文档不变。

描述

JSON_REMOVE(json, path [, path] ...) 从 JSON 文档中删除指定路径处的数据并返回剩余文档。当提供多个路径时,会从左到右依次处理。

如果文档中不存在某个路径,则忽略该路径且不报错。如果文档或某个路径参数为 NULL,则结果为 NULL

语法

JSON_REMOVE(json, path [, path] ...)

参数

参数

说明

json

要修改的 JSON 文档。

path

标识要删除的值的一个或多个 JSON 路径表达式。

返回值

返回删除指定值后的 JSON 文档。

示例

DROP DATABASE IF EXISTS json_remove_demo;
CREATE DATABASE json_remove_demo;
USE json_remove_demo;

SELECT JSON_REMOVE('{"a":1,"b":2}', '$.a') AS removed_a;
SELECT JSON_REMOVE('["a", ["b", "c"], "d"]', '$[1]') AS removed_index_1;
SELECT JSON_REMOVE('{"a":1,"b":2,"c":3}', '$.a', '$.c') AS removed_two;

CREATE TABLE json_remove_users (id INT PRIMARY KEY, info JSON);
INSERT INTO json_remove_users (id, info) VALUES
    (1, '{"name":"Alice","age":30,"email":"alice@example.com"}');
UPDATE json_remove_users SET info = JSON_REMOVE(info, '$.email') WHERE id = 1;
SELECT * FROM json_remove_users ORDER BY id;

DROP DATABASE json_remove_demo;