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 著作权归作者所有。请勿转载和采集!

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