/****** 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--验证身份证是否有效的更多相关文章

  1. JAVA代码验证身份证信息

    java验证身份证信息代码 转自:http://www.blogjava.net/xylz/archive/2011/01/05/342330.html import java.util.Calend ...

  2. php验证身份证号码的正确性

    /********************php验证身份证号码是否正确函数*********************/function is_idcard( $id ) {   $id = strto ...

  3. jQuery validation学习(2)验证身份证

    验证邮编 jQuery.validator.addMethod("isZipCode", function(value, element) { -]{}$/; return thi ...

  4. C#验证身份证号码

    一.18位的身份证号码 如:130429####%%%%00781.1~6位为地区代码,其中1.2位数为各省级政府的代码,3.4位数为地.市级政府的代码,5.6位数为县.区级政府代码.如13(河北省) ...

  5. 使用t-sql从身份证号中提取生日

    使用t-sql从身份证号中提取生日,一下是转换16位身份证号的例子,仅供参考. create function getDateFromID( ) ) returns datetime as begin ...

  6. php验证身份证号码正确性

    发布:JB01   来源:脚本学堂     [大 中 小] 分享一例php代码,用于验证身份证号码的正确性,用到了preg_match.preg_replace函数,有需要的朋友可以参考学习下.本文转 ...

  7. Js完美验证15/18身份证,Js验证身份证,支持15/18位

    Js完美验证15/18身份证,Js验证身份证,支持15/18位 >>>>>>>>>>>>>>>>> ...

  8. JavaScript验证身份证号

    <%@ page language="java" contentType="text/html; charset=GB18030" pageEncodin ...

  9. 验证身份证合法性的js

    分别对15和18位的身份证号进行验证,非常严格. function idCardNo(value){ //验证身份证号方法 : : : : : : : : : : : : : : : : : : : ...

  10. php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用

    //验证身份证是否有效 function validateIDCard($IDCard) { if (strlen($IDCard) == 18) { return check18IDCard($ID ...

随机推荐

  1. CentOS下MySQL的彻底卸载

      #################CentOS7下MySQL的卸载#################### 1:查看MySQL是否安装: 方式1: [root@localhost usr]# yu ...

  2. setAttribute第三个参数

    object.setAttribute(sName, vValue [, iFlags]) sName参数应是Dom属性而非html中的属性.Dom中Html专有的接口属性应该以小写字母开头,如果属性 ...

  3. python 爬虫气象气象定时报 气象预警推送

    "2018-04-09 14时""长沙市""10日(明天)""多云转雷阵雨""29℃""1 ...

  4. 「小程序JAVA实战」小程序视频列表到详情功能(58)

    转自:https://idig8.com/2018/09/23/xiaochengxujavashizhanxiaochengxushipinliebiaodaoxiangqinggongneng57 ...

  5. Lazy JSF Primefaces Datatable Pagination

    http://www.javacodegeeks.com/2012/04/lazy-jsf-primefaces-datatable.html

  6. The web application [/zzti] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver

    先说下题目:因为是在我进行处理项目升级时同时遇到了上面的问题,一般都会遇到,所以就一并说了 不罗嗦了,正题: 在本地服务器中提供tomcat6,然后在myeclipse中配置severs tomcat ...

  7. __stdcall详解

    对_stdcall 的理解(上) 在C语言中,假设我们有这样的一个函数:int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用 ...

  8. Redis 与 Lua Script

    [Redis Script] 1.EVAL script numkeys key [key ...] arg [arg ...] 从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以 ...

  9. Code First 之类继承

    关于Entity Framework 的code first 模式,相信大家都不陌生了.本文就来看看实体继承在 codefirst里的用法. 第一步  添加 code first 的环境 这里为了方便 ...

  10. 关于在线文本编辑器防XSS注入攻击问题

    跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击.例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如<script>alert('这是一 ...