您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页MariaDB V10.4 如何删除 json array 数组中的多个元素

MariaDB V10.4 如何删除 json array 数组中的多个元素

来源:叨叨游戏网

使用 json_remove 可以按路径删除数组元素,但要一个一个地指定路径。

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

 

为了想丢进去一个数组,给我找出指定多个数值,然后从源数组中删除,尝试写了下面的函数。

delimiter $$

DROP FUNCTION IF EXISTS `pdfn_array_remove`$$
CREATE FUNCTION `pdfn_array_remove`(
	`array` JSON,
	`items` JSON
)
RETURNS json
COMMENT '从 JSON 数组中删除元素,仅针对 int 型数组'
BEGIN
	DECLARE i INT UNSIGNED DEFAULT 0;
	DECLARE size INT UNSIGNED DEFAULT JSON_LENGTH(items);
	DECLARE path VARCHAR(255) DEFAULT NULL;

	IF array IS NULL THEN
		return JSON_ARRAY();
	END IF;

	-- search every item and remove from source array
	WHILE i < size do
		SET path := JSON_SEARCH(array, 'one', JSON_VALUE(items, CONCAT('$[', i, ']')));
		IF path IS NOT NULL THEN
			SET array := JSON_REMOVE(array, JSON_VALUE(path, '$'));
		END IF;
		
		SET i := i + 1;
	END WHILE;
	
	RETURN array;
END$$

delimiter ;

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务