当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-01-25 23:11:00  来源:本站整理

巧用SQL函数实现身份证15位变18位[MSSQL防范]

赞助商链接



  本文“巧用SQL函数实现身份证15位变18位[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

由于二代身份证15位升为18位,很多SQL数据库中存储的数据都需求改变,下面就为您介绍利用SQL 函数转换15位身份证号码到18位的办法,供您参考,但愿对您学习SQL函数的利用可以有所启迪.

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位[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 巧用SQL语句删除反复记录
  • 巧用sql替换语句
  • 巧用SQL server暂时表
  • <b>巧用SQL中case when语句实现模糊查询</b>
  • 巧用SQL函数实现身份证15位变18位
  • 巧用Squid的ACL和拜候列表实现高效拜候掌握
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .