MYSQL通过JSON函数实现批量字符串替换
字符串replace函数
最近在开发移动应⽤项⽬的时候,经常需要⽤多个字符串替换的情况,为了⽅便,⾃⼰写了⼀个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数组,显⽰的时候⾃动替换成固定格式的说明⽂字
通过以上的⽅法可以扩展到批量替换成更多类型的函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。