新聞中心
由于二代身份證15位升為18位,很多SQL數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)都需要改變,下面就為您介紹使用SQL 函數(shù)轉(zhuǎn)換15位身份證號(hào)碼到18位的方法,供您參考,希望對(duì)您學(xué)習(xí)SQL函數(shù)的使用能夠有所啟示。

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有貴港免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
create function f_CID15to18 (@sfz char(18))
returns char(18)
as
begin
declare @osfz varchar(18)
declare @i int,@ai int,@wi int,@sum int,@mod int,@result int
set @osfz = @sfz
set @sum = 0
IF len(@osfz) = 15
begin
set @osfz = substring(@osfz,1,6) + '19' + substring(@osfz,7,9)
set @i = 2
while @i <= 18
begin
set @ai = cast(substring(@osfz,19 - @i,1) as int)
set @wi = POWER (2, (@i - 1))% 11
set @sum = @sum + @ai * @wi
set @i = @I + 1
end
set @mod = @sum % 11
set @result = 12 - @mod
IF @result >= 10
IF @result = 10
RETURN @osfz + 'X'
ELSE
begin
set @result = @result - 11
RETURN @osfz + ltrim(@result)
end
ELSE
RETURN @osfz + ltrim(@result)
end
ELSE
RETURN @sfz
return @sfz
end
go
-- select dbo.f_CID15to18('411023 850207 106')
-- /*
-- ------------------
-- 32108519760502***9
-- (所影響的行數(shù)為 1 行)
-- */
-- select dbo.f_CID15to18('321085760502***')
-- /*
-- ------------------
-- 32108519760502***9
-- (所影響的行數(shù)為 1 行)
-- */
-- drop function f_CID15to18
分享文章:巧用SQL函數(shù)實(shí)現(xiàn)身份證15位變18位
文章URL:http://www.5511xx.com/article/dpsooch.html


咨詢
建站咨詢
