JSON_REMOVE()

简介

从JSON文档中删除数据并返回结果。

语法

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

说明

1. 如果任何参数为NULL,则返回NULL。

2. 如果json_doc参数不是一个有效的JSON文档,或者任何路径参数不是一个有效的路径表达式,或者是$或包含*或**通配符,则会发生错误。

3. json_doc可进行多次删除,进行了一次删除后的json_doc,将作为下一次删除的新值。

4. 如果要删除的元素在文档中不存在,则忽略此路径。

示例

-- 任何参数为NULL,返回NULL
SELECT JSON_REMOVE('["a", ["b", "c"], "d"]', NULL) FROM DUAL;
JSON_REMOVE(json)      |
-----------------------
null                   |
总数目:1

SELECT JSON_REMOVE('["a", ["b", "c"], "d"]', '$[1]',NULL) FROM DUAL;
JSON_REMOVE(json)      |
-----------------------
null                   |
总数目:1

SELECT JSON_REMOVE(NULL,'$[1]') FROM DUAL;
JSON_REMOVE(json)      |
-----------------------
null                   |
总数目:1


-- 删除多个值
SELECT JSON_REMOVE('[1,2,3]','$[0]','$[1]') FROM DUAL;
JSON_REMOVE(json)      |
-----------------------
[2]                    |
总数目:1

SELECT JSON_REMOVE('{"a":"b","c":"d","e":"f"}','$.a','$.b') FROM DUAL;
JSON_REMOVE(json)      |
-----------------------
{"c": "d", "e": "f"}   |
总数目:1


-- 删除不存在路径下的值
SELECT JSON_REMOVE('[1,2,3]','$[10]') FROM DUAL;
JSON_REMOVE(json)      |
-----------------------
[1, 2, 3]              |
总数目:1