在 MySQL 5.7 中,可以创建自定义函数来检测文本字段中的手机号和身份证号,并对其进行替换。以下是一个示例代码:

  1. 创建函数

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 ;

  1. 使用函数

使用该函数可以对一个文本字段中的手机号和身份证号进行替换:

SELECT replace_phone_idcard('这是一个手机号:13888888888,这是一个身份证号:440106198801010101') AS result;

输出结果为:

这是一个手机号:,这是一个身份证号:***


原文地址: https://www.cveoy.top/t/topic/obNu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录