-- =============================================
-- Description: <判断身份证号是否合法,返回结果对应如下:>
-- -2:含有非法字符
-- -1:位数不正确(不为15或18位)
-- 0:位数正确,但证号不合法
-- 1:位数正确,且证号合法
-- =============================================
create FUNCTION [dbo].[f_checksfzh]
(
 @ID varchar(30)  --要校验的证号
)
RETURNS int
AS
BEGIN
    DECLARE @ID15 varchar(30),@S18 int,@check char,@result int 
 if len(@ID)<>18 and len(@ID)<>15
  set @result = -1 --位数不正确
 else if len(@ID)=15
  begin
   if ISNUMERIC(@ID)=1
   set @result = 1
   else
   set @result = -2 --含有非法字符
  end
 else --18位
 begin 
  if ISNUMERIC(left(@ID,17))<>1 or (upper(right(@ID,1))<>'X' and ISNUMERIC(right(@ID,1))<>1)
   set @result = -2 --含有非法字符
  else
  begin
   set @ID15 = left(@ID,6)+substring(@ID,9,len(@ID) -9 )
   SET @S18 = ( (SUBSTRING(@ID15,1,1)*7) + (SUBSTRING(@ID15,2,1)*9) + (SUBSTRING(@ID15,3,1)*10)   
      + (SUBSTRING(@ID15,4,1)*5) + (SUBSTRING(@ID15,5,1)*8) + (SUBSTRING(@ID15,6,1)*4) + (1*2) + (9*1)   
      + (SUBSTRING(@ID15,7,1)*6) + (SUBSTRING(@ID15,8,1)*3) + (SUBSTRING(@ID15,9,1)*7)   
      + (SUBSTRING(@ID15,10,1)*9)+ (SUBSTRING(@ID15,11,1)*10)+ (SUBSTRING(@ID15,12,1)*5)   
      + (SUBSTRING(@ID15,13,1)*8) +(SUBSTRING(@ID15,14,1)*4) + (SUBSTRING(@ID15,15,1)*2) ) % 11  
       
   if @S18 = 0 set @check='1' 
   if @S18 = 1 set @check='0' 
   if @S18 = 2 set @check='X' 
   if @S18 = 3 set @check='9' 
   if @S18 = 4 set @check='8' 
   if @S18 = 5 set @check='7' 
   if @S18 = 6 set @check='6' 
   if @S18 = 7 set @check='5' 
   if @S18 = 8 set @check='4' 
   if @S18 = 9 set @check='3' 
   if @S18 = 10 set @check='2' 
   if @check=right(upper(@ID),1) set @result=1
   else set @result=0
  END
 end
    RETURN @result  
END

转载于:https://www.cnblogs.com/zhycyq/archive/2012/07/11/2585739.html

判断身份证号是否合法相关推荐

  1. 判断身份证号是否合法;验证城市区号,生日

    判断身份证号是否合法 ; 验证城市区号 , 生日 直接上代码 /*** 判断身份证号是否合法* 验证城市区号;生日* Date:2018年12月29日 * @author D2yml**/ publi ...

  2. 判断身份证号,根据身份证号自动生成出生日期

    判断身份证号,根据身份证号自动生成出生日期 idCodeValid(rule, value, callback) => {let reg = /(^[1-9]\d{5}(18|19|([23]\ ...

  3. Java验证身份证号是否合法

    身份证作为居民的唯一标识.在很多系统中需要用户输入身份证号信息,今天我们就来编写一个方法验证身份证号的合法性. 首先我们来看看身份证号的编码规则: 前1-2位数字表示:所在省(直辖市.自治区)的代码: ...

  4. 利用正则表达式判断身份证号

    package com.alex.RegExp;import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  5. 验证身份证号是否合法

    一.身份证位数15或者18位 最后一位可以为字母 二.身份证前6位[ABCDEF]为行政区划数字代码(简称数字码): –15位身份证号码:第7.8位为出生年份(两位数),第9.10位为出生月份,第11 ...

  6. 用python判断身份证号性别_验证身份证号的Python脚本

    引用 a[0], a[1], a[2], a[3], ..., a[16], a[17] 其中a[i]表示第i位数字,i=0,1,2,...,17,如果最后一位(校验位)是X,则a[17]=10 每一 ...

  7. php 判断身份证号是否正确

    public function validateIDCard($idcard) {if(empty($idcard)){return '错误身份证';}else{$idcard = strtouppe ...

  8. Excel表格函数判断身份证号是否正确

    D4为身份证号所在的位置 =IF(LEN(D4)=0,"空",IF(LEN(D4)=15,"老号",IF(LEN(D4)<>18,"位数不 ...

  9. PHP 判断身份证号

    PHP 检验身份证号可以使用正则表达式来实现.可以在正则表达式中规定身份证号的格式,然后使用 PHP 中的 preg_match 函数来判断输入的字符串是否符合这个格式.如果符合,返回 true,不符 ...

最新文章

  1. 2022-2028年中国激光全息膜行业市场现状调研及市场需求潜力报告
  2. sklearn中的Pipline(流水线学习器)
  3. PMCAFF | 产品经理的招聘要求调研分析
  4. 【Python3】Python模块与包的导入
  5. alipay html5 app,H5App支付宝开发详解
  6. java php python 高并发_关于php如何调用Python快速发送高并发邮件的示例代码
  7. 前后端分离开发模式下后端质量的保证 —— 单元测试
  8. 前端学习(2784):首页轮播图的渲染
  9. (论文)WS-DAN (弱监督数据增强)
  10. 树状数组相关应用之多叉树子树问题
  11. sql server表分区_介绍分区表SQL Server增量统计信息
  12. ORACLE数据库定时任务自动停止(broken)的原因分析及解决办法
  13. String 和 InputStream 互转方式
  14. apache加nginx加Php,Apache/Nginx为PHP设置、添加$_SERVER服务器环境变量
  15. 企业软件 - 创新尝试 - 用友 股份 产业链创新中心 - 产品流程会议问题解决 - 杨天政 - 原型产品发版标准 - 2014-3-13
  16. 热点素材在哪找?5年自媒体人,我推荐这3个平台
  17. C++实现贪吃蛇游戏
  18. 利用阿里云ECS搭建微信公众平台服务器
  19. S100数字源表之LDO芯片电学特性测试方案
  20. 90个面试问题(带答案)

热门文章

  1. 好分数a1a5_好分数怎么查看班级排名 七年级学生成绩查询
  2. 4.5.2 OSPF协议与链路状态算法
  3. Ti公司DSP的DSK、EVM、DDK的区别
  4. FFT频谱泄露和加窗 (一)
  5. Youth---青春
  6. “大众搬家”何其多啊?[3/14/2007 update]
  7. Angular vs React 最全面深入对比
  8. iOS开发网络篇—多线程断点下载
  9. CKFinder 自定义文件路径扩展ConfigurationPathBuilder
  10. 关于无法显示-隐藏文件、文件夹以及操作系统文件夹