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数组,显示的时候自动替换成固定格式的说明文字

通过以上的方法可以扩展到批量替换成更多类型的函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值