MySQL 5.7 自定义函数:替换文本中的手机号和身份证号
在 MySQL 5.7 中,可以创建自定义函数来检测文本字段中的手机号和身份证号,并对其进行替换。以下是一个示例代码:
- 创建函数
DELIMITER $$
CREATE FUNCTION replace_phone_idcard(s VARCHAR(200)) RETURNS VARCHAR(200)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE len INT DEFAULT LENGTH(s);
DECLARE res VARCHAR(200) DEFAULT '';
WHILE (i <= len) DO
IF (SUBSTRING(s, i, 1) REGEXP '[0-9]') THEN
IF (SUBSTRING(s, i, 1) REGEXP '[1-9]') THEN
IF (SUBSTRING(s, i, 2) REGEXP '1[3456789]|2[0123456789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]|7[0123456789]|8[0123456789]|9[0123456789]') THEN
SET res = CONCAT(res, '*');
SET i = i + 11;
ELSEIF (SUBSTRING(s, i, 2) REGEXP '1[0123456789]|2[0123456789]|3[0123456789]|4[0123456789]|5[0123456789]|6[0123456789]') THEN
SET res = CONCAT(res, '*');
SET i = i + 8;
ELSE
SET res = CONCAT(res, SUBSTRING(s, i, 1));
END IF;
ELSE
SET res = CONCAT(res, SUBSTRING(s, i, 1));
END IF;
ELSE
SET res = CONCAT(res, SUBSTRING(s, i, 1));
END IF;
SET i = i + 1;
END WHILE;
RETURN res;
END$$
DELIMITER ;
- 使用函数
使用该函数可以对一个文本字段中的手机号和身份证号进行替换:
SELECT replace_phone_idcard('这是一个手机号:13888888888,这是一个身份证号:440106198801010101') AS result;
输出结果为:
这是一个手机号:,这是一个身份证号:***
原文地址: https://www.cveoy.top/t/topic/obNu 著作权归作者所有。请勿转载和采集!