mssql2000 身份证号码验证
CREATE VIEW thisDate
--返回当前日期,因为自定义函数中不能使用GETDATE()
AS
SELECT convert(VARCHAR(8),getdate(),112) AS aDate Create function Check_Sfz(@sfzh char(18))
/*mssql2000
返回值=0,身份证校验正确
1:位数不对
2:含有不规则字符
3:日期不对
4:校验位不对
*/
returns tinyint
as
begin
set @sfzh=ltrim(rtrim(@sfzh))
declare @r char(1),@resu TINYINT,@thisDate VARCHAR(8)
declare @i INT
SELECT @thisDate=aDate FROM thisDate
if len(@sfzh) <> 18
set @resu=1
ELSE
BEGIN
IF isnumeric(substring(@sfzh,1,17))=0
--检查前17位是否为数字
set @resu=2
ELSE IF isDate(substring(@sfzh,7,8))=0
--日期是否符合规则
set @resu=3
ELSE IF (substring(@sfzh,7,4)<'') OR (substring(@sfzh,7,8)>=@thisDate)
--日期是否符合逻辑
SET @resu=3
else
BEGIN
--检查第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) * 2
set @i = @i - @i/11 * 11
set @r = (case @i
when 0 then '' when 1 then '' when 2 then 'x' when 3 then ''
when 4 then '' when 5 then '' when 6 then '' when 7 then ''
when 8 then '' when 9 then '' when 10 then '' else '/' end)
IF @r=lower(substring(@sfzh,18,1)) set @resu=0
ELSE SET @resu=4--验证位不正确
end
end
return(@resu)
END
mssql2000 身份证号码验证的更多相关文章
- js正则实现二代身份证号码验证详解
js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...
- C#实现身份证号码验证的方法
本文实例讲述了C#实现身份证号码验证的方法.分享给大家供大家参考.具体实现方法如下: 随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很 ...
- 是否以某字符串结尾 是否以某字符串开始 是否是整数 裁减字符串空格 是否是浮点数 是否所有字符为数字类型 是否为空 是否是EMAIL 是否是电话号码 身份证号码验证-支持新的带x身份证 日期验证
/* 1.是否以某字符串结尾 endsWith(theStr,endStr) @param theStr:要判断的字符串 @param endStr:以此字符串结尾 @return boolean; ...
- Java 身份证号码验证
身份证号码验证 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 2.地址码(前 ...
- Javascript身份证号码验证
"来来来,坐这儿". "什么?我可是有身份的人,怎么能和你坐一块儿".沛笠晃了晃手里的身份证,不屑说道. "你咋不上天呢?有身份还喝油条吃豆浆&quo ...
- js实现身份证号码验证
/*根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数 ...
- js身份证号码验证
验证身份证号码的有效性,包含15位和18位: 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列 ...
- 【Java】身份证号码验证
代码引用自:https://gitee.com/appleat/codes/ynrtqujv0wfgesm8ia9b547 package xxx; /** * Created by wdj on 2 ...
- Java实现身份证号码验证源码分享
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
随机推荐
- PHPCMS v9 超级安全防范教程!
一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...
- 挖掘微信Web版通信的全过程 [转]
昨天是周末,在家闲得无聊,于是去weiphone.com逛了一圈,偶然发现有人发了一帖叫<微信 for Mac>, 这勾起了我的好奇心,国内做Mac开发的人确实很少,对于那些能够独自开发一 ...
- AJAX怎么用POST 传参数
//注册回调函数.注意注册回调函数是不能加括号,加了会把函数的值返回给onreadystatechange xmlhttp.onreadystatechange = callback; //设置连接信 ...
- Socket与Http方式解析发送xml消息封装中间件jar包
最近项目代码中太多重复的编写Document,不同的接口需要不同的模板,于是重写提取公共部分打成jar包,方便各个系统统一使用~ 提取结构: Http连接方式: import java.nio.cha ...
- HBase最佳实践-列族设计优化
本文转自hbase.收藏学习下. 随着大数据的越来越普及,HBase也变得越来越流行.会用HBase现在已经变的并不困难,然而,怎么把它用的更好却并不简单.那怎么定义'用的好'呢?很简单,在保证系统稳 ...
- ORA-12519, ORA-00020异常产生原因及解决方案
近期在做项目的过程中,使用oracle时碰到了如下两个异常: ORA-12519, TNS:no appropriate service handler found: ORA-00020:maximu ...
- Error:The network adaptor could not establish the connection问题的解决办法
最近在学习hibernate 5.0.4, 自然而然就需要使用数据库,由于本人工作中一直使用Oracle,于是在自己的电脑上安装了Oracle 12.1.0, 安装完成使用一直没有问题,突然有一天使 ...
- SharePoint 2013 SP1发布了
好消息,SharePoint 2013 SP1终于发布了: SP1说明:http://support.microsoft.com/kb/2880552 下载页面:http://www.microsof ...
- OpenCV的数据类型---Cv
CvScalar就是一个包含四个元素的结构体变量. CvScalar定义可存放1—4个数值的数值,其结构如下. typedef struct CvScalar{ double val[4];}C ...
- Mvc public virtual DbQuery<TResult> Include("")
参数 path 类型:System.String要在查询结果中返回的相关对象列表(以点号分隔). 返回值 类型:System.Data.Entity.Infrastructure.DbQuery< ...