mssql sqlserver 使用身份证号码获取相应的“省份”的方法分享


摘要:
下文讲述使用sql脚本计算出身份证号码所属省份的方法分享,如下所示:
实验环境:sqlserver 2008 R2


实现思路:
获取身份证号码,最左边的2位编码,然后乘以5,再加1,然后从得到的起始位置开始截取4位字符串,替换字符串中的下划线,得到的结果为
身份证所属省份

     -------编写身份证号码获取省份的方法-------------------
create function 
 fn_getShengFenByCardNo (@cardNo varchar(18))   
returns varchar(50)   
as 
begin    

    declare @info varchar(1000)   
    set @info = '____,____,____,____,____,____,____,____,____,____,____,北京__,天津__,河北__,山西__,内蒙古_,____,____,____,____,____,辽宁__,吉林__,黑龙江_,____,____,____,____,____,____,____,上海__,江苏__,浙江__,安微__,福建__,江西__,山东__,____,____,____,河南__,湖北__,湖南__,广东__,广西__,海南__,____,____,____,重庆__,四川__,贵州__,云南__,西藏__,____,____,____,____,____,____,陕西__,甘肃__,青海__,宁夏__,新疆__,____,____,____,____,____,台湾__,____,____,____,____,____,____,____,____,____,香港__,澳门__,____,____,____,____,____,____,____,____,国外__,' 


    set @cardNo = upper(@cardNo)   

    IF (len(@cardNo) <> 18 OR patindex('%[^0-9X]%',@cardNo) > 0)   
        RETURN '身份证号码输入有误' 

    IF substring(@info,cast(left(@cardNo,2) as int)* 5+1,4) = ''    
        RETURN '无此地区!' 


    RETURN replace(substring(@info,cast(left(@cardNo,2) as int)* 5+1,4),'_','')   

end   
go  

---举例应用---
select  dbo.fn_getShengFenByCardNo('110101201805011793')

go

---删除测试的sql函数
drop function dbo.fn_getShengFenByCardNo
 
mssql_sqlserver_身份证号获取省份_8662

mssql_sqlserver_身份证号获取省份_8662