SQLServer2000身份证校验函数实现

1 下载量 109 浏览量 更新于2024-08-31 收藏 59KB PDF 举报
该资源提供了一个在SQL Server 2000中用于验证身份证号码合法性的自定义函数示例代码。这个函数名为`fun_utils_idnumberoprater`,它可以检查输入的15位或18位身份证号码是否有效,并且能够将15位身份证号码转换为18位。身份证号码由17位数字和1位校验码组成,包括6位地址码、8位出生日期码、3位顺序码和1位校验码。校验码的计算方法是将前17位数字分别乘以特定系数,然后求和,再对11取余数,根据余数确定校验码。 以下是详细的身份证号码校验及转换过程: 1. **身份证号码结构**: - 地址码:表示持证人的户籍所在地,由6位数字组成,前两位代表省或直辖市,中间两位代表市,最后两位代表县或区。 - 出生日期码:按照YYYYMMDD的格式,用8位数字表示持证人的出生日期。 - 顺序码:在同地址码和出生日期码相同的条件下,为同一地区内的个人进行排序,奇数分配给男性,偶数分配给女性,共3位。 - 校验码:根据前17位数字通过特定算法计算得出,用于检验身份证号码的正确性。 2. **身份证校验码算法**: - 系数乘法:将身份证号码的前17位数字分别乘以预设的系数(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)。 - 求和:将上述乘积求和。 - 取余:将求和结果除以11,得到余数。 - 对应校验码:余数对应11位校验码数组(1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2)中的相应位置,得到最终的校验码。 3. **函数实现**: - `fun_utils_idnumberoprater`函数接受一个长度为50的VARCHAR参数`@idnumber`,默认为空字符串。 - 函数内部使用DECLARE语句声明变量,如返回值`@ReturnText`,分隔符`@Separator`,身份证号码的各个元素`@idnumberElement`等。 - 使用循环结构遍历身份证号码的每一位,进行校验码计算。 - 如果是15位身份证号码,会在末尾添加1900年和性别码(奇数男性,偶数女性),然后重新计算校验码。 此代码段提供了一种实用的方法来验证输入的身份证号码是否符合中国的身份证号码规则,对于数据库操作和数据验证场景非常有用。