导读:

  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
评论
发表评论

您还没有登录,请登录后发表评论