MYSQL 通過JSON函式實現批量字串替換
阿新 • • 發佈:2019-01-31
最近在開發移動應用專案的時候,經常需要用多個字串替換的情況,為了方便,自己寫了一個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陣列,顯示的時候自動替換成固定格式的說明文字
通過以上的方法可以擴充套件到批量替換成更多型別的函式。