2007-12-11
写了个15位身份证号升级为18位的SQL语句
导读:
SQL code
--15位身份证号升级为18位,适用于18xx年出生的公民
UPDATE员工表 SET身份证号=
SUBSTRING(身份证号,1,6)+'18'+SUBSTRING(身份证号,7,9)+
SUBSTRING('10X98765432',
(
CAST(SUBSTRING(身份证号, 1,1) ASINT)*7
+CAST(SUBSTRING(身份证号, 2,1) ASINT)*9
+CAST(SUBSTRING(身份证号, 3,1) ASINT)*10
+CAST(SUBSTRING(身份证号, 4,1) ASINT)*5
+CAST(SUBSTRING(身份证号, 5,1) ASINT)*8
+CAST(SUBSTRING(身份证号, 6,1) ASINT)*4
+1*2
+8*1
+CAST(SUBSTRING(身份证号, 7,1) ASINT)*6
+CAST(SUBSTRING(身份证号, 8,1) ASINT)*3
+CAST(SUBSTRING(身份证号, 9,1) ASINT)*7
+CAST(SUBSTRING(身份证号,10,1) ASINT)*9
+CAST(SUBSTRING(身份证号,11,1) ASINT)*10
+CAST(SUBSTRING(身份证号,12,1) ASINT)*5
+CAST(SUBSTRING(身份证号,13,1) ASINT)*8
+CAST(SUBSTRING(身份证号,14,1) ASINT)*4
+CAST(SUBSTRING(身份证号,15,1) ASINT)*2
)
%11+1, 1)
WHERELEN(身份证号)=15ANDSUBSTRING(身份证号,13,3) IN('999','998','997','996')
--15位身份证号升级为18位,适用于19xx年出生的公民
UPDATE员工表 SET身份证号=
SUBSTRING(身份证号,1,6)+'19'+SUBSTRING(身份证号,7,9)+
SUBSTRING('10X98765432',
(
CAST(SUBSTRING(身份证号, 1,1) ASINT)*7
+CAST(SUBSTRING(身份证号, 2,1) ASINT)*9
+CAST(SUBSTRING(身份证号, 3,1) ASINT)*10
+CAST(SUBSTRING(身份证号, 4,1) ASINT)*5
+CAST(SUBSTRING(身份证号, 5,1) ASINT)*8
+CAST(SUBSTRING(身份证号, 6,1) ASINT)*4
+1*2
+9*1
+CAST(SUBSTRING(身份证号, 7,1) ASINT)*6
+CAST(SUBSTRING(身份证号, 8,1) ASINT)*3
+CAST(SUBSTRING(身份证号, 9,1) ASINT)*7
+CAST(SUBSTRING(身份证号,10,1) ASINT)*9
+CAST(SUBSTRING(身份证号,11,1) ASINT)*10
+CAST(SUBSTRING(身份证号,12,1) ASINT)*5
+CAST(SUBSTRING(身份证号,13,1) ASINT)*8
+CAST(SUBSTRING(身份证号,14,1) ASINT)*4
+CAST(SUBSTRING(身份证号,15,1) ASINT)*2
)
%11+1, 1)
WHERELEN(身份证号)=15ANDSUBSTRING(身份证号,13,3) NOTIN('999','998','997','996')
本文转自
http://topic.csdn.net/u/20071210/08/5b50610e-75d5-4085-b43e-09088ee90b18.html
SQL code
--15位身份证号升级为18位,适用于18xx年出生的公民
UPDATE员工表 SET身份证号=
SUBSTRING(身份证号,1,6)+'18'+SUBSTRING(身份证号,7,9)+
SUBSTRING('10X98765432',
(
CAST(SUBSTRING(身份证号, 1,1) ASINT)*7
+CAST(SUBSTRING(身份证号, 2,1) ASINT)*9
+CAST(SUBSTRING(身份证号, 3,1) ASINT)*10
+CAST(SUBSTRING(身份证号, 4,1) ASINT)*5
+CAST(SUBSTRING(身份证号, 5,1) ASINT)*8
+CAST(SUBSTRING(身份证号, 6,1) ASINT)*4
+1*2
+8*1
+CAST(SUBSTRING(身份证号, 7,1) ASINT)*6
+CAST(SUBSTRING(身份证号, 8,1) ASINT)*3
+CAST(SUBSTRING(身份证号, 9,1) ASINT)*7
+CAST(SUBSTRING(身份证号,10,1) ASINT)*9
+CAST(SUBSTRING(身份证号,11,1) ASINT)*10
+CAST(SUBSTRING(身份证号,12,1) ASINT)*5
+CAST(SUBSTRING(身份证号,13,1) ASINT)*8
+CAST(SUBSTRING(身份证号,14,1) ASINT)*4
+CAST(SUBSTRING(身份证号,15,1) ASINT)*2
)
%11+1, 1)
WHERELEN(身份证号)=15ANDSUBSTRING(身份证号,13,3) IN('999','998','997','996')
--15位身份证号升级为18位,适用于19xx年出生的公民
UPDATE员工表 SET身份证号=
SUBSTRING(身份证号,1,6)+'19'+SUBSTRING(身份证号,7,9)+
SUBSTRING('10X98765432',
(
CAST(SUBSTRING(身份证号, 1,1) ASINT)*7
+CAST(SUBSTRING(身份证号, 2,1) ASINT)*9
+CAST(SUBSTRING(身份证号, 3,1) ASINT)*10
+CAST(SUBSTRING(身份证号, 4,1) ASINT)*5
+CAST(SUBSTRING(身份证号, 5,1) ASINT)*8
+CAST(SUBSTRING(身份证号, 6,1) ASINT)*4
+1*2
+9*1
+CAST(SUBSTRING(身份证号, 7,1) ASINT)*6
+CAST(SUBSTRING(身份证号, 8,1) ASINT)*3
+CAST(SUBSTRING(身份证号, 9,1) ASINT)*7
+CAST(SUBSTRING(身份证号,10,1) ASINT)*9
+CAST(SUBSTRING(身份证号,11,1) ASINT)*10
+CAST(SUBSTRING(身份证号,12,1) ASINT)*5
+CAST(SUBSTRING(身份证号,13,1) ASINT)*8
+CAST(SUBSTRING(身份证号,14,1) ASINT)*4
+CAST(SUBSTRING(身份证号,15,1) ASINT)*2
)
%11+1, 1)
WHERELEN(身份证号)=15ANDSUBSTRING(身份证号,13,3) NOTIN('999','998','997','996')
本文转自
http://topic.csdn.net/u/20071210/08/5b50610e-75d5-4085-b43e-09088ee90b18.html







评论排行榜