TSQL--验证身份证是否有效
- /****** Object: UserDefinedFunction [dbo].[udf_IsvalidIDCard] Script Date: 02/27/2014 16:03:20 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE FUNCTION [dbo].[udf_IsvalidIDCard]
- (
- @IDCardNo VARCHAR(50)=''
- )
- RETURNS BIT
- AS
- /*******************************************************************
- 函数名称:udf_IsvalidIDCard()
- 参数:@IDCardNo string 身份证号码
- 返回值: bit 是否有效
- 功能描述:判断身份证号码是否合法
- 备注:目前中国的身份证号码有18位和15位.
- 1,18位身份证号码的组成:6位地区编码+8位出生年月日+3位编号(奇男偶女)+1位校验码
- 2,15位身份证号码的组成:6位地区编码+6位出生年月日+3位编号(奇男偶女)
- *******************************************************************/
- BEGIN
- DECLARE @Length INT,
- @Loop INT,
- @Sum INT
- DECLARE @SingleChar CHAR
- SET @Sum = 0
- IF @IDCardNo IS NULL OR @IDCardNo = NULL OR LTRIM(RTRIM(@IDCardNo)) = ''
- BEGIN
- RETURN 0
- END
- SET @Length = LEN(@IDCardNo)
- --判断位数
- IF @Length < > 18 AND @Length < > 15
- BEGIN
- RETURN 0
- END
- IF @Length = 18
- BEGIN
- IF ISNUMERIC(LEFT(@IDCardNo, 17)) = 0
- BEGIN
- RETURN 0
- END
- IF ISDATE(SUBSTRING(@IDCardNo, 7, 4) + '-' + SUBSTRING(@IDCardNo, 11, 2) + '-' + SUBSTRING(@IDCardNo, 13, 2)) = 0
- BEGIN
- RETURN 0
- END
- SET @Loop = 17
- WHILE (@Loop >= 1)
- BEGIN
- SET @Sum = @Sum + CONVERT(INT,SUBSTRING(@IDCardNo, @Loop, 1)) * (POWER(2,(18 - @Loop)) % 11)
- SET @Loop = @Loop - 1
- END
- SET @Loop = @Sum % 11
- IF @Loop = 0
- BEGIN
- SET @SingleChar = ''
- END
- ELSE IF @Loop = 1
- BEGIN
- SET @SingleChar = ''
- END
- ELSE IF @Loop = 2
- BEGIN
- SET @SingleChar = 'X'
- END
- ELSE
- BEGIN
- SET @SingleChar = CONVERT(VARCHAR(2),(12 - @Loop))
- END
- IF LOWER(RIGHT(@IDCardNo, 1)) < > LOWER(@SingleChar)
- BEGIN
- RETURN 0
- END
- END
- ELSE IF @Length = 15
- BEGIN
- IF ISNUMERIC(@IDCardNo) = 0
- BEGIN
- RETURN 0
- END
- IF ISDATE('' + SUBSTRING(@IDCardNo, 7, 2) + '-' + SUBSTRING(@IDCardNo, 9, 2) + '-' + SUBSTRING(@IDCardNo, 11, 2)) = 0
- BEGIN
- RETURN 0
- END
- END
- RETURN 1
- END
- GO
网上摘抄来代码,无法追寻出处,见谅。
TSQL--验证身份证是否有效的更多相关文章
- JAVA代码验证身份证信息
java验证身份证信息代码 转自:http://www.blogjava.net/xylz/archive/2011/01/05/342330.html import java.util.Calend ...
- php验证身份证号码的正确性
/********************php验证身份证号码是否正确函数*********************/function is_idcard( $id ) { $id = strto ...
- jQuery validation学习(2)验证身份证
验证邮编 jQuery.validator.addMethod("isZipCode", function(value, element) { -]{}$/; return thi ...
- C#验证身份证号码
一.18位的身份证号码 如:130429####%%%%00781.1~6位为地区代码,其中1.2位数为各省级政府的代码,3.4位数为地.市级政府的代码,5.6位数为县.区级政府代码.如13(河北省) ...
- 使用t-sql从身份证号中提取生日
使用t-sql从身份证号中提取生日,一下是转换16位身份证号的例子,仅供参考. create function getDateFromID( ) ) returns datetime as begin ...
- php验证身份证号码正确性
发布:JB01 来源:脚本学堂 [大 中 小] 分享一例php代码,用于验证身份证号码的正确性,用到了preg_match.preg_replace函数,有需要的朋友可以参考学习下.本文转 ...
- Js完美验证15/18身份证,Js验证身份证,支持15/18位
Js完美验证15/18身份证,Js验证身份证,支持15/18位 >>>>>>>>>>>>>>>>> ...
- JavaScript验证身份证号
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncodin ...
- 验证身份证合法性的js
分别对15和18位的身份证号进行验证,非常严格. function idCardNo(value){ //验证身份证号方法 : : : : : : : : : : : : : : : : : : : ...
- php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用
//验证身份证是否有效 function validateIDCard($IDCard) { if (strlen($IDCard) == 18) { return check18IDCard($ID ...
随机推荐
- 接口测试“八重天”---HttpClient
HTTP协议在互联网无处不在,在前面的章节中记录了‘接口本质即协议’,因此,接口测试首先了解的便是协议,其发送数据包和接收数据包的过程,其次便是如何在测试中去发送去解析,不论是通过代码还是工具也好,抽 ...
- 十三.jQuery源码解析之$.type()
512行:出现了一个class2type. 在jQuery中全局搜索这个变量. 这段代码的意思是将一串字符串通过空格分割成数组,并且使用each遍历数组来初始化class2type. 最终的结果应该是 ...
- [Python] String strip() Method
Description The method strip() returns a copy of the string in which all chars have been stripped fr ...
- ggplot map
ggplot {ggplot2} R Documentation Create a new ggplot Description ggplot() initializes a ggplot objec ...
- 517. Super Washing Machines
▶ 超级洗碗机.给定一个有 n 元素的整数数组,我们把 “将指定位置上元素的值减 1,同时其左侧或者右侧相邻元素的值加 1” 称为一次操作,每个回合内,可以选定任意 1 至 n 个位置进行独立的操作, ...
- 利用Nginx rewrite规则实现域名显性转发
体验更优排版请移步原文:http://blog.kwin.wang/website/nginx-rewrite-realize-domain-forward.html 自己的blog域名最开始用的vb ...
- 0 1 1 2 3 5 8 13 21 34 求第N个, 用js实现
function fibo(n) { var f = []; for (var c = 0; c < n; ++c) { console.log(f.join("")) f. ...
- FoxPro 常用内部函数
1.数学函数(数值函数) 求绝对值函数ABS 格式:ABS( expN) 求整函数INT 格式:INT( expN) 四舍五入函数ROUND 格式:ROUND( expN,〈保留小数位〉) 功能:按保 ...
- BloomFilter
[BloomFilter] 错误率估计.最优哗哈希函数个数.位数组的大小 尚未细看.以看补上. 参考:http://blog.csdn.net/jiaomeng/article/details/149 ...
- Unix高级编程Note1
[Unix Notes] 1./etc/passwd 2.extern int errno; 3.限制, limit.h 4.文件原子操作:O_EXCL & O_CREAT 5.stat操作 ...