1. 程式人生 > >MYSQL 通過JSON函式實現批量字串替換

MYSQL 通過JSON函式實現批量字串替換

最近在開發移動應用專案的時候,經常需要用多個字串替換的情況,為了方便,自己寫了一個replaceEx函式來實現批量替換,執行版本:Mysql 5.7.22,主要應用到MYSQL JSON相關函式

應用場景:各種資產變更日誌,不想儲存太多重複的資料

CREATE DEFINER=`root`@`%` FUNCTION `replaceEx`(str longtext,replaceJSON JSON,formatStr VARCHAR(20)) RETURNS longtext CHARSET utf8mb4
    READS SQL DATA
    DETERMINISTIC
    SQL SECURITY INVOKER
    COMMENT '【呼叫】批量替換字串'
BEGIN	
	DECLARE idx  		TINYINT(1) DEFAULT 0;
	DECLARE oKeys     	JSON;
	DECLARE keyname 	VARCHAR(20);
	
	SET oKeys= JSON_KEYS(replaceJSON);
	
	WHILE idx<JSON_LENGTH(oKeys) DO
		SET keyname = JSON_UNQUOTE(JSON_EXTRACT(oKeys,CONCAT('$[',idx,']')));
		SET @value  = JSON_EXTRACT(replaceJSON,CONCAT('$.',keyname));
		SET str     = REPLACE(str,CONCAT('#',keyname,'#'),REPLACE(FORMAT(@value,LENGTH(SUBSTRING_INDEX(formatStr,'.',-1))),',',''));
		SET idx     = idx+1;
	END WHILE;
	
	RETURN str;
END

例如:資產變更日誌,資料庫中儲存JOSN陣列,顯示的時候自動替換成固定格式的說明文字

通過以上的方法可以擴充套件到批量替換成更多型別的函式。