1、 简单的检验 ,不校验校验位:
createFUNCTION[fn_ValidateIDC]
(
@idcvarchar(18)
)RETURNSBIT
AS
begin
if(isnumeric(@idc)=1andlen(@idc)=15andisdate(substring(@idc,7,6))=1
and(right(@idc,1)='0'orright(@idc,1)='1'))

or(len(@idc)=18andisnumeric(left(@idc,17))=1andisdate(substring(@idc,7,8))=1
andpatindex('%[X0-9]%',right(@idc,1))>0)
return1
return0

end

go

selectdbo.fn_ValidateIDC('12345619780901231X')
dropfunctionfn_ValidateIDC

上面的代码仅检查位数及相应日期位是否合理,不作深内校验,上面的代码 可以简单修改给表的列上做check,网友自行修改。
2、 如果要严格来校验,现我把一个网友(loworth )的代码进行修改整理给大家看:
CREATEFUNCTION[fn_ValidateIDC]
(
@idcvarchar(18)
)RETURNSBIT
AS
BEGIN

DECLARE@validFactorsVARCHAR(17),@validCodesVARCHAR(11),@iTINYINT,@iTempINT
SELECT@validFactors='79A584216379A5842',@validCodes='10X98765432',@i=1,@iTemp=0
--验证校验位

IFLEN(@idc)<>15ANDLEN(@idc)<>18--身份证号只有15或18位
RETURN(0)
IFLEN(@idc)=15--如果是15位身份证则只验证日期
IF(ISDATE('19'+SUBSTRING(@idc,7,6))=0and'19'+SUBSTRING(@idc,7,6)between'1900-01-01'and'2010-01-01')
RETURN(0)
ELSE
RETURN(1)
--18位身份证验证日期校验位
IF(ISDATE(SUBSTRING(@idc,7,8))=0andSUBSTRING(@idc,7,6)between'1900-01-01'and'2010-01-01')--验证日期
RETURN(0)
---验证校验位开始

WHILE@i<18
BEGIN
SELECT@iTemp=@iTemp+CAST(SUBSTRING(@idc,@i,1)ASINT)*
(CASESUBSTRING(@validFactors,@i,1)WHEN'A'THEN10ELSESUBSTRING(@validFactors,@i,1)END)
,@i=@i+1
END
IFSUBSTRING(@validCodes,@iTemp%11+1,1)=RIGHT(@idc,1)
RETURN1
ELSE
RETURN0
RETURN0
END
GO

测试:
selectdbo.fn_ValidateIDC('32108519**05026619')

/**//*
------
**大家用合法身份证号测试
*/
清理 :

dropfunctionfn_ValidateIDC
分享到:
相关推荐
身份证号码验证算法 (一) 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码 + 八位数字出生日期码 + 三位数字顺序码 + 一位校验码。...
### SQL15位和18位公民身份证校验函数知识点详解 #### 一、背景介绍 在进行数据录入时,确保身份证信息的合法...通过上述SQL函数,可以有效地验证15位和18位公民身份证号码的合法性,从而提高数据录入的准确性和效率。
解析身份证信息时,我们需要理解这些规则并编写相应的算法。 再者,手机号码归属地查询通常需要对接电信运营商的服务。国内三大运营商(中国移动、中国联通和中国电信)都提供了相关的查询服务,但出于隐私保护,...
该函数是支持Oracle环境下的对身份照进行校验的函数,它是按照身份照计算算法去校验的,能够精准的判断出身份照是否合法,通过返回值为1:表示为正确的身份证,返回值为0表示为错误的身份证
在Java中,我们可以创建一个方法来验证身份证号码的合法性。这个方法通常包括以下几个步骤: 1. **长度检查**:确保输入的身份证号码长度为18位。 2. **地址码检查**:根据前6位数字判断是否对应我国的行政区划代码...
5. **安全性**:身份证信息敏感,系统需具备防止SQL注入、XSS攻击等安全防护措施。同时,应考虑数据加密和权限管理,确保信息不被非法获取。 6. **毕业论文**:这部分内容可能包含了系统的需求分析、设计策略、实现...
身份证号校验器是一个可以用来验证身份证号码是否有效的验证工具。 特点: 1、支持批量输入验证 2、支持从数据库读取验证 3、支持SQL SERVER 4、支持ORACLE 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关...
这段SQL代码首先创建了一个名为`t`的临时表,包含一个带有示例身份证号码的行。然后,使用`EXISTS`子句和`CONNECT BY`来遍历身份证号码的每一位,将其与相应的系数相乘,并累加。最后,使用`MOD`函数计算总和对11...
这里,我们关注的是一个自定义的PHP函数`checkNOId`,它用于验证身份证号码的有效性。这个函数接收三个参数:身份证号码、籍贯和性别。在实际开发中,这样的函数可能用于用户注册、个人信息验证等场景。 首先,让...
身份证号码验证算法是确保输入的身份证号码有效性和正确性的重要工具,它主要应用于数据录入、用户注册等...然而,这种做法可能会导致无法直接验证身份证号码的完整性,需要在业务逻辑层进行完整的18位身份证号码校验。
2. **身份证校验算法**:验证身份证号码的有效性通常需要应用特定的算法。中国居民身份证号码有18位,包括地区代码、出生日期、顺序码和校验码。PHP代码会检查身份证号码的长度,然后使用算法计算校验码,确保其与...
4. **校验码**:第十八位是校验码,用于验证身份证号码的有效性。 #### 校验码计算方法 校验码的计算基于前17位数字,并利用特定的权重因子(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7)与这些数字相乘...
2. **数据验证**:在实际应用中,应增加对身份证号码的验证逻辑,确保输入的身份证号码格式正确且有效。 3. **隐私保护**:在处理涉及个人隐私的数据时,应遵循相关的法律法规,确保个人信息的安全性和合规性。 ...
4. **校验码**(一位):用于验证身份证号码的正确性,通过特定算法计算得出。 #### 二、校验码计算方法 校验码的计算基于前17位数字本体码,具体步骤如下: 1. **加权求和**:使用预定义的加权因子序列(7, 9, ...
例如,防止SQL注入攻击,对用户输入进行验证,以及在显示结果时不泄露过多个人信息。 8. **环境配置**: - 系统要求PHP5.6环境,这意味着在部署和运行此应用时,需要确保服务器或本地开发环境符合这一版本要求。 ...
标题中的“电信设备-身份证信息核查装置及系统”暗示了这是一个关于电信行业内,用于验证身份证信息的技术或设备的专题。这种装置和系统通常涉及到身份识别技术、网络安全、数据处理和通信技术等多个方面。以下是...
这一功能通常用于验证身份证的有效性,以及在需要了解用户基本信息的场景下,如注册、实名认证等。以下是对这一实例开发源码的详细分析: 1. **身份证号码的结构与规则** - 身份证号码由18位数字组成,包括地区码...
在本案例中,"ASP源码—身份证归属地查询与身份证位数检验程序 v2.5.zip" 提供了一个基于ASP技术的身份证验证系统,主要用于验证身份证号码的正确性以及查询身份证对应的户籍所在地。 首先,身份证位数检验是通过...
这些信息对于开发者来说非常有用,可以用于快速验证输入的身份证号码是否符合中国身份证的分配规则,或者在进行人口统计分析时作为基础数据。 在处理这类数据时,你需要确保遵循数据隐私和安全的最佳实践,因为...