create
function
f_getcityfromcid (
@cid
varchar
(
18
))
returns
varchar
(
50
)
as
begin
declare
@acity
varchar
(
1000
)
set
@acity
=
'
____,____,____,____,____,____,____,____,____,____,____,北京__,天津__,河北__,山西__,内蒙古_,____,____,____,____,____,辽宁__,吉林__,黑龙江_,____,____,____,____,____,____,____,上海__,江苏__,浙江__,安微__,福建__,江西__,山东__,____,____,____,河南__,湖北__,湖南__,广东__,广西__,海南__,____,____,____,重庆__,四川__,贵州__,云南__,西藏__,____,____,____,____,____,____,陕西__,甘肃__,青海__,宁夏__,新疆__,____,____,____,____,____,台湾__,____,____,____,____,____,____,____,____,____,香港__,澳门__,____,____,____,____,____,____,____,____,国外__,
'
set
@cid
=
upper
(
@cid
)
IF
(
len
(
@cid
)
<>
18
OR
patindex
(
'
%[^0-9X]%
'
,
@cid
)
>
0
)
RETURN
'
你小子骗我,这不是合法的身份证
'
IF
substring
(
@acity
,
cast
(
left
(
@cid
,
2
)
as
int
)
*
5
+
1
,
4
)
=
''
RETURN
'
你小子骗我,这身份证的地区码不存在
'
RETURN
'
这小子是:
'
+
replace
(
substring
(
@acity
,
cast
(
left
(
@cid
,
2
)
as
int
)
*
5
+
1
,
4
),
'
_
'
,
''
)
end
go
select
dbo.f_getcityfromcid(
'
32108519760502ttt9
'
)
/**/
/* -------------------------------------------------- 你小子骗我,这不是合法的身份证 (所影响的行数为 1 行) */
select
dbo.f_getcityfromcid(
'
32108519****026**9
'
)
/**/
/* -------------------------------------------------- 这小子是:江苏 (所影响的行数为 1 行) */
drop
function
f_getcityfromcid
识别身份证号码的省
最新推荐文章于 2021-11-02 11:55:47 发布