zoukankan      html  css  js  c++  java
  • 将身份证的15位号码升级为18位

    Go

    --创建函数(此函数来自于csdn,作者不详)

    create function [dbo].[id15to18] (@id15 char(15))

    returns char(18)

    as

    begin

        declare @id18 char(18)

      

        declare @s1 as integer

        declare @s2 as integer

        declare @s3 as integer

        declare @s4 as integer

        declare @s5 as integer

        declare @s6 as integer

        declare @s7 as integer

        declare @s8 as integer

        declare @s9 as integer

        declare @s10 as integer

        declare @s11 as integer

        declare @s12 as integer

        declare @s13 as integer

        declare @s14 as integer

        declare @s15 as integer

        declare @s16 as integer

        declare @s17 as integer

        declare @s18 as integer

      

        set @s1=substring(@id15,1,1)

        set @s2=substring(@id15,2,1)

        set @s3=substring(@id15,3,1)

        set @s4=substring(@id15,4,1)

        set @s5=substring(@id15,5,1)

        set @s6=substring(@id15,6,1)

        set @s7=1

        set @s8=9

        set @s9=substring(@id15,7,1)

        set @s10=substring(@id15,8,1)

        set @s11=substring(@id15,9,1)

        set @s12=substring(@id15,10,1)

        set @s13=substring(@id15,11,1)

        set @s14=substring(@id15,12,1)

        set @s15=substring(@id15,13,1)

        set @s16=substring(@id15,14,1)

        set @s17=substring(@id15,15,1)

       

        set @s18=((@s1*7)+(@s2*9)+(@s3*10)+(@s4*5)+(@s5*8)+(@s6*4)+(@s7*2)+(@s8*1)

            +(@s9*6)+(@s10*3)+(@s11*7)+(@s12*9)+(@s13*10)+(@s14*5)+(@s15*8)+(@s16

            *4)+(@s17*2))%11

      

        set @id18=substring(@id15,1,6)+'19'+substring(@id15,7,9)

            +case when @s18=0 then '1'

                  when @s18=1 then '0'

                  when @s18=2 then 'x'

                  when @s18=3 then '9'

                  when @s18=4 then '8'

                  when @s18=5 then '7'

                  when @s18=6 then '6'

                  when @s18=7 then '5'

                  when @s18=8 then '4'

                  when @s18=9 then '3'

                  when @s18=10 then '2'

             end

      

        return @id18

    end

     

    --测试示例

    select [dbo].[id15to18]('222222830604321')

     

    --运行结果

    /*

    222222198306043213

    */

  • 相关阅读:
    使用select2插件并添加拼音首字母检索
    sql id 或使用nolock
    .net 开源组件
    EF 创建数据库的策略 codefist加快效率!【not oringin!】
    个人拾遗!数组的拷贝等
    编程拾遗:集合类型的函数,返回值,如果没有,就返回默认集合new,或者 default(T)好一些。
    C# datatable to list
    npoi导出excel 导出List<T>
    display:inline、block、inline-block的区别 摘】
    ie下,jquery为动态添加的节点添加事件,用live
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244473.html
Copyright © 2011-2022 走看看