mysql 自定义函数 身份证号转年龄(支持15/18位身份证)

函数

FUNCTION `idcard2age`(`idcard` varchar(255)) RETURNS int(10)
BEGIN

	if idcard regexp '[0-9]{18}|[0-9]{17}X|[0-9]{15}' then
		if(length(idcard)=18)then
			return ifnull(timestampdiff(YEAR,substring(idcard,7,8),now()),-1);
		elseif(length(idcard)=15)then
			return ifnull(timestampdiff(YEAR,concat('19',substring(idcard,7,6)),now()),-1);
		end if;
	end if;

	RETURN -1;
END

虚拟字段

if(length(`证件号码`)=18,ifnull(timestampdiff(YEAR,substring(`证件号码`,7,8),now()),-1) , if(length(`证件号码`)=15,ifnull(timestampdiff(YEAR,concat('19',substring(`证件号码`,7,6)),now()),-1),-1))

posted on 2022-09-08 11:38  小馬過河﹎  阅读(59)  评论(0)    收藏  举报

导航