问题:
mysql5.8以下没有正则匹配的函数,很多场景需要匹配并且使用正则表达式来匹配。
解决方案:
自定义一个正则匹配函数:
-- 自定义正则匹配函数
DELIMITER //
CREATE FUNCTION `regexp_replace`(string_a VARCHAR(1000),pattern VARCHAR(1000),string_b VARCHAR(1000))
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
DECLARE string_c VARCHAR(1000);
DECLARE nub VARCHAR(1);
DECLARE i INT;
SET i =1;
SET string_c ='';
IF string_a REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(string_a) THEN
LEAVE loop_label;
END IF;
SET nub = SUBSTRING(string_a,i,1);
IF NOT nub REGEXP pattern THEN
SET string_c = CONCAT(string_c,nub);
ELSE
SET string_c = CONCAT(string_c,string_b);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET string_c = string_a;
END IF;
RETURN string_c;
END
//