sql语句查询身份证号15位自动转18位

CREATE  FUNCTION `id_card_15to18`(`v_card` varchar(32)) RETURNS varchar(32) CHARSET utf8
BEGIN
	DECLARE v_sum varchar(32) DEFAULT '';
	DECLARE v_mod varchar(32) DEFAULT '';
	DECLARE i_flag varchar(32) DEFAULT '';
	DECLARE	 i_card varchar(32) DEFAULT '';
	SET v_card = REPLACE(v_card,' ','');
	IF LENGTH(v_card) <> 15 THEN
	RETURN NULL;
	END IF;
	SET v_card = CONCAT(SUBSTRING(v_card,1,6),'19',SUBSTRING(v_card,7,9));
	SET v_sum=(SUBSTRING(v_card,1,1)*7)+(SUBSTRING(v_card,2,1)*9)+(SUBSTRING(v_card,3,1)*10)+
	(SUBSTRING(v_card,4,1)*5)+(SUBSTRING(v_card,5,1)*8)+(SUBSTRING(v_card,6,1)*4)+
	(SUBSTRING(v_card,7,1)*2)+(SUBSTRING(v_card,8,1)*1)+(SUBSTRING(v_card,9,1)*6)+
	(SUBSTRING(v_card,10,1)*3)+(SUBSTRING(v_card,11,1)*7)+(SUBSTRING(v_card,12,1)*9)+
	(SUBSTRING(v_card,13,1)*10)+(SUBSTRING(v_card,14,1)*5)+(SUBSTRING(v_card,15,1)*8)+
	(SUBSTRING(v_card,16,1)*4)+(SUBSTRING(v_card,17,1)*2);
	SET v_mod=v_sum%11;
	IF v_mod = 0 THEN
		SET i_flag = '1';
	END IF;
	IF v_mod = 1 THEN
		SET i_flag = '0';
	END IF;
	IF v_mod = 2 THEN
		SET i_flag = 'X';
	END IF;
	IF v_mod = 3 THEN
		SET i_flag = '9';
	END IF;
	IF v_mod = 4 THEN
		SET i_flag = '8';
	END IF;
	IF v_mod = 5 THEN
		SET i_flag = '7';
	END IF;
	IF v_mod = 6 THEN
		SET i_flag = '6';
	END IF;
	IF v_mod = 7 THEN
		SET i_flag = '5';
	END IF;
	IF v_mod = 8 THEN
		SET i_flag = '4';
	END IF;
	IF v_mod = 9 THEN
		SET i_flag = '3';
	END IF;
	IF v_mod = 10 THEN
		SET i_flag = '2';
	END IF;
	SET i_card = CONCAT(v_card,i_flag);
	RETURN i_card;
END
上一篇:3D扭动卡片 html+css+js


下一篇:数据结构 顺序表实现一副扑克牌的洗牌+发牌功能