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. php 升级排错

    lnmp 环境下,升级php版本,模块都加载完成,数据库,nginx 设置都完好,但php 只能用ip 访问数据库,不能用localhost,处理要设置php.ini 的三个mysqld.sock,还 ...

  2. XML编程知识点总结

    DOM和SAX DOM的全称是Document Object Model,也即文档对象模型.基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合,应用程序挣是通过对这个对象模型的操作,来实 ...

  3. A New Beginning

    不知不觉中,接触前端已经快两个月了,从一开始的懵懂无知,到现在的--依旧不是很懂,似乎浪费了很多时间,一直都有记纸质笔记.写总结的习惯,写满一本又换一本,却在不知不觉中忽略了自己的实践能力,花费了太多 ...

  4. SQL判断某列中是否包含中文字符、英文字符、纯数字 (转)

    一.包含中文字符 select * from 表名 where 列名 like '%[吖-座]%' 二.包含英文字符 select * from 表名 where 列名 like '%[a-z]%' ...

  5. [SQL]Sql转至问题

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

  6. CentOS 6.5下静默安装oracle

    本例: 通过SSH远程连接云主机,上传oracle11g安装包,在centos6.5上无图形化界面静默安装oracle11g. 涉及工具及环境: 1.本地环境windows7+ssh远程连接工具xSh ...

  7. 2、NASA HS3(Hurricane AND Server Storm Sentinel)

    国内访问不到,但是通过ppt可以看到,数据支撑做的很到位,前台展示很炫.  气象领域WebGL应用最好案例的当之无愧啊.这篇全部贴图了. 来自为知笔记(Wiz)

  8. php 教程列表

    php教程 php概述 php环境搭建 PHP书写格式 php变量 php常量 PHP注释 php字符串 string PHP整型 integer PHP浮点型 float php布尔型 php数据类 ...

  9. 线程,join合并线程

    在A中,调用B.join()那么,A会“等”B先执行 public class Join01 extends Thread { @Override public void run() { int su ...

  10. jquery的blur之后,focus获取不到焦点的解决办法

    一:很多童鞋可能会遇到这种情况: jquery的blur之后,focus获取不到焦点. 二:使用场景: 用户填写信息的时候,若邮箱为空,则提示 请填写邮箱,并将光标置于填写邮箱的文本框里,方便用户的再 ...