mssql2000 身份证号码验证

阅读: 评论:0

mssql2000 身份证号码验证

mssql2000 身份证号码验证

CREATE VIEW thisDate
--返回当前日期,因为自定义函数中不能使用GETDATE()
AS 
SELECT convert(VARCHAR(8),getdate(),112) AS aDateCreate function Check_Sfz(@sfzh char(18))
/*mssql2000
返回值=0,身份证校验正确 1:位数不对 2:含有不规则字符  3:日期不对 4:校验位不对
*/
returns tinyint
as
beginset @sfzh=ltrim(rtrim(@sfzh))declare @r char(1),@resu TINYINT,@thisDate VARCHAR(8)declare @i INTSELECT @thisDate=aDate FROM thisDateif len(@sfzh) <> 18 set @resu=1ELSEBEGINIF isnumeric(substring(@sfzh,1,17))=0--检查前17位是否为数字set @resu=2ELSE IF isDate(substring(@sfzh,7,8))=0  --日期是否符合规则 set @resu=3ELSE IF (substring(@sfzh,7,4)<'1900') OR (substring(@sfzh,7,8)>=@thisDate)--日期是否符合逻辑SET @resu=3elseBEGIN --检查第18位数据的正确性set @i = cast(substring(@sfzh,1,1) as int) * 7+ cast(substring(@sfzh,2,1) as int) * 9+ cast(substring(@sfzh,3,1) as int) * 10+ cast(substring(@sfzh,4,1) as int) * 5+ cast(substring(@sfzh,5,1) as int) * 8+ cast(substring(@sfzh,6,1) as int) * 4+ cast(substring(@sfzh,7,1) as int) * 2+ cast(substring(@sfzh,8,1) as int) * 1+ cast(substring(@sfzh,9,1) as int) * 6+ cast(substring(@sfzh,10,1) as int) * 3+ cast(substring(@sfzh,11,1) as int) * 7+ cast(substring(@sfzh,12,1) as int) * 9+ cast(substring(@sfzh,13,1) as int) * 10+ cast(substring(@sfzh,14,1) as int) * 5+ cast(substring(@sfzh,15,1) as int) * 8+ cast(substring(@sfzh,16,1) as int) * 4  + cast(substring(@sfzh,17,1) as int) * 2set @i = @i - @i/11 * 11set @r = (case @i when 0 then '1' when 1 then '0' when 2 then 'x' when 3 then '9'when 4 then '8' when 5 then '7' when 6 then '6' when 7 then '5'when 8 then '4' when 9 then '3' when 10 then '2' else '/' end)IF @r=lower(substring(@sfzh,18,1)) set @resu=0ELSE SET @resu=4--验证位不正确endendreturn(@resu) 
END

 

转载于:.html

本文发布于:2024-01-31 18:42:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170669776530571.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:身份证号码
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23