巧用SQL函数实现身份证15位变18位

由于二代身份证15位升为18位,很多SQL数据库中存储的数据都需要改变,下面就为您介绍使用SQL 函数转换15位身份证号码到18位的方法,供您参考,希望对您学习SQL函数的使用能够有所启示。

10年积累的成都做网站、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有贵港免费网站建设让你可以放心的选择与我们合作。

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
-- (所影响的行数为 1 行)
-- */
-- select dbo.f_CID15to18('321085760502***')
-- /*
-- ------------------
-- 32108519760502***9
-- (所影响的行数为 1 行)
-- */
-- drop function f_CID15to18

标题名称:巧用SQL函数实现身份证15位变18位
分享路径:http://www.mswzjz.cn/qtweb/news30/406780.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能