将身份证的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

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值