MySQL 将该函数替换成查身份证该函数 CREATE DEFINER=ioc FUNCTION getPhonef_string varchar3000 CHARACTER SET utf8mb4 RETURNS varchar11 CHARSET utf8BEGINDECLARE isPhone INT1 DEFAULT 0;DECLARE ipos INT11 DEFAULT 0;DECL
CREATE DEFINER=ioc@% FUNCTION getIdCard(f_string varchar(3000) CHARACTER SET utf8mb4) RETURNS varchar(18) CHARSET utf8
BEGIN
DECLARE isIdCard INT(1) DEFAULT 0;
DECLARE ipos INT(11) DEFAULT 0;
DECLARE idCard VARCHAR(18) DEFAULT '';
DECLARE c_char VARCHAR(1) CHARACTER SET utf8mb4 DEFAULT '';
SELECT f_string REGEXP "(^[1-9][0-9]{5}(19|20)[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])[0-9]{3}[0-9Xx]$)" INTO isIdCard;
IF (isIdCard=1) THEN
f_loop:LOOP
SELECT SUBSTR(f_string,ipos,1) INTO c_char;
IF (c_char='1' OR c_char='2') THEN
SELECT SUBSTR(f_string,ipos,18) INTO idCard;
SELECT idCard REGEXP "(^[1-9][0-9]{5}(19|20)[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])[0-9]{3}[0-9Xx]$)" INTO isIdCard;
IF (isIdCard=1) THEN
LEAVE f_loop;
ELSE
SET ipos = ipos+18;
END IF;
END IF;
SET ipos = ipos+1;
IF ipos=LENGTH(f_string) THEN
LEAVE f_loop;
END IF;
END LOOP f_loop;
END IF;
RETURN idCard;
EN
原文地址: https://www.cveoy.top/t/topic/fFgK 著作权归作者所有。请勿转载和采集!