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 身份证号码验证的更多相关文章

  1. js正则实现二代身份证号码验证详解

    js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...

  2. C#实现身份证号码验证的方法

    本文实例讲述了C#实现身份证号码验证的方法.分享给大家供大家参考.具体实现方法如下: 随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很 ...

  3. 是否以某字符串结尾 是否以某字符串开始 是否是整数 裁减字符串空格 是否是浮点数 是否所有字符为数字类型 是否为空 是否是EMAIL 是否是电话号码 身份证号码验证-支持新的带x身份证 日期验证

    /* 1.是否以某字符串结尾 endsWith(theStr,endStr) @param theStr:要判断的字符串 @param endStr:以此字符串结尾 @return boolean; ...

  4. Java 身份证号码验证

    身份证号码验证 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 2.地址码(前 ...

  5. Javascript身份证号码验证

    "来来来,坐这儿". "什么?我可是有身份的人,怎么能和你坐一块儿".沛笠晃了晃手里的身份证,不屑说道. "你咋不上天呢?有身份还喝油条吃豆浆&quo ...

  6. js实现身份证号码验证

    /*根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数 ...

  7. js身份证号码验证

    验证身份证号码的有效性,包含15位和18位: 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列 ...

  8. 【Java】身份证号码验证

    代码引用自:https://gitee.com/appleat/codes/ynrtqujv0wfgesm8ia9b547 package xxx; /** * Created by wdj on 2 ...

  9. Java实现身份证号码验证源码分享

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

随机推荐

  1. SQL Server的高级知识

    DataSet的内容介绍,两种单例模式(并发量的考虑),SQL高级中的case语句.连接操作.子查询.派生表 -------------------------------- 1.Case的用法 使用 ...

  2. 浏览器内核控制Meta标签

    国内的主流浏览器都是双核浏览器:基于Webkit内核用于常用网站的高速浏览.基于IE的内核用于兼容网银.旧版网站.以360的几款浏览器为例,我们优先通过Webkit内核渲染主流的网站,只有小量的网站通 ...

  3. kubuntu+roundcube搭建邮件服务器(包含LAMP)

    好久之前写的了,偶然翻到然后拿出来看看,里面文字图片都没改,有错误请见谅 步骤: 一.关于ubuntu的安装二.ubuntu配置LAMP(Linux+Apache+Mysql+Perl/PHP/Pyt ...

  4. 【转】Linux查看内存大小和插槽

    原文https://wsgzao.github.io/post/linux-memory/ Linux 查看内存的插槽数,已经使用多少插槽,每条内存多大,已使用内存多大 dmidecode | gre ...

  5. sm4加密 解密(oc)

    前几天项目用到sm4加密解密,加密为十六进制字符串,再将十六进制字符串解密.网上百度了下,sm4是密钥长度和加密明文加密密文都为16个字节十六进制数据,网上的sm4 c语言算法很容易搜到,笔者刚开始没 ...

  6. 1,SFDC 开发篇 - 类对象和SOQL查询

    1,类对象 & 接口 & 属性   2, Object & SOQL    

  7. angularjs上传图片

    通过AngularJS实现图片上传及缩略图展示(读取文件内容) AngularJS图片上传功能的实现(读取文件内容) AngularJs实现Multipart/form-data 文件的上传(上传文件 ...

  8. sql参数化查询in的参数

    private Query setParameter(Query query, Map<String, Object> map) { if (map != null) { Set<S ...

  9. 使用yum安装应用程序时候,报错:[Errno 14] PYCURL ERROR 7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不可达"

    使用yum安装应用程序时候,报错:[Errno 14] PYCURL ERROR 7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不 ...

  10. MongoDB学习笔记(索引)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...