身份證15們轉18位存儲過程

 
/****** Object:  UserDefinedFunction [dbo].[fn_ID_15_To_18]    Script Date: 12/14/2016 11:10:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[fn_ID_15_To_18] (@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.fn_ID_15_To_18('15位身份證')



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章