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. RMQ训练题 codevs 1291 火车线路 已经搞定

    就是线段树维护区间的最小值 但是要注意 本题坑人的地方 是   a到b站  实际上是维护a到b-1  因为b站已经下车了 我勒个去呀 #include<iostream> #include ...

  2. php 对url 操作类:url拼接、get获取页面、post获取页面(带传参)

    /* * @brief url封装类,将常用的url请求操作封装在一起 * */ class URL{ private $error; public function __construct(){ $ ...

  3. Android Studio 小技巧/快捷键 合集

    参考: http://jaeger.itscoder.com/android/2016/02/14/android-studio-tips.html 1. 书签(Bookmarks) 描述:这是一个很 ...

  4. ubuntu下postgreSQL安装配置

    一.安装并配置,并设置远程登陆的用户名和密码 1.安装postgreSQL sudo apt-get update sudo apt-get install postgresql-9.4 在Ubunt ...

  5. CRM 2016 子表单中N:1关系 字段要求与新建时的关系

    父表单在新建子表单项时弹出的窗口和 子表单的N:1关系是有关系的.说白了就是子表单窗体上的父表单字段是不是必填项. 关系如下: 1 非必填项 点击子表单的"+"号时,会出现look ...

  6. [SQL]Sql转至问题

    HRMS Name InsuranceMoney InsuranceName -------------------- -------------------- ------------------- ...

  7. 【VB6】VB6实现拖拽

    首先,设置OLEDropMode OLEDropMode = 1 然后插入代码 Private Sub 控件名_OLEStartDrag(Data As DataObject, AllowedEffe ...

  8. BAE log服务的配置(nodejs)

    log4js.loadAppender('baev3-log'); var options = { 'user': appConfig.AK, //这里是在用户的安全认证中的Access Key ID ...

  9. Struts2:效验器——声明式

    就是用xml配置的方式,而不是Java代码的形式,那个是“编程式” Action: package org.ah.s2; import com.opensymphony.xwork2.ActionSu ...

  10. 500lines项目简介

    "500行或更少" "What I cannot create, I do not understand." -- Richard Feynman <50 ...