zoukankan      html  css  js  c++  java
  • 判断18位身份证号是否正确

    -- =============================================
    -- Description: <判断18位身份证号是否正确,返回结果对应如下:>
    -- -1:位数不正确
    -- 0:位数正确,但证号不合法
    -- 1:位数正确,且证号合法
    -- =============================================

    create FUNCTION [dbo].[f_check18sfzh]
    ( @ID18 varchar(30)  --要校验的证号
    )
    RETURNS int
    AS
    BEGIN
        DECLARE @ID15 varchar(30),@S18 int,@check char,@result int 
     if len(@ID18)<>18
      set @result = -1 --位数不正确
     else
     begin
     set @ID15 = left(@ID18,6)+substring(@ID18,9,len(@ID18) -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(@ID18),1) set @result=1
      else set @result=0
        END 
        RETURN @result  
    END 

  • 相关阅读:
    两个多项式的卷积【NTT】
    Determinant【矩阵的行列式的求法】
    2020 CCPC 长春题解
    Easy Equation【差分+前缀和】
    CF1433G-Reducing Delivery Cost【最短路】
    Interstellar Hunter【2020CCPC秦皇岛-I】
    P4721 【模板】分治 FFT
    关于Spring事务传播行为的个人见解
    InnoDB MVCC实现原理整理
    Nginx学习笔记(五、Nginx缓存与限流)
  • 原文地址:https://www.cnblogs.com/zhycyq/p/2585758.html
Copyright © 2011-2022 走看看