mysql 怎么用SQL语句将老身份证号15位补位到新身份证号18位

一、15位的身份证和18位的身份证的区别是什么?

只有15位号码的就是第一代身份证,而18位号码的则是第二代身份证。15位的身份证和18位的身份证的区别是:第二代身份证比第一代身份证增加了出生年份中的前两位数字和最后一位数字校验码。
18位的第二代身份证号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码、八位数字出生日期码、三位数字顺序码和一位数字校验码。
地址码(前六位数):表示身份证编码对象常住户口所在省份、地市,以及县(市、旗、区)的行政区划代码,按照GB/T2260的规定执行。其中:前1、2位数字表示所在省份的代码; 第3、4位数字表示所在地市的代码; 第5、6位数字表示:所在县(市、旗、区)的代码。
出生日期码(第七位至十四位):表示身份证编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
顺序码(第十五位至十七位):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
校验码(第十八位数):作为尾号的校验码,是由身份证号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现Ⅹ,但如果尾号是10,那么就得用Ⅹ来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用Ⅹ来代替10,可以保证公民的身份证符合国家标准。

二、15位的身份证每位都代表什么?18位的身份证每位都代表什么?

15位身份证号码各位的含义:
(1)前1、2位数字表示:省、自治区、直辖市代码;
(2)第3、4位数字表示:位地级市、盟、自治州代码;
(3)第5、6位数字表示:县、县级市、区代码;
(4)第7—12位数字表示:出生年月日 (年份简写,只显示最后2位)
(5)第13-15位数字表示:校检码,其中15位男为单数,女为双数;
18位身份证号码各位的含义:
(1)前1、2位数字表示:所在省(直辖市、自治区)的代码;
(2)第3、4位数字表示:所在地级市(自治州)的代码;
(3)第5、6位数字表示:所在区(县、自治县、县级市)的代码;
(4)第7—14位数字表示:出生年、月、日;
(5)第15、16位数字表示:所在地的派出所的代码;
(6)第17位数字表示性别:奇数表示男性,偶数表示女性;
(7)第18位数字是校检码:也有的说是个人信息码,不是随计算机的随机产生,它是 用来检验身份证的正确性。校检码可以是0—9的数字,有时也用x表示。

三、使用sql对老身份证进行补位。

1、15位老身份证号码

2、执行sql语句,身份证号补位(老身份证号15位补位到新身份证号18位)

UPDATE person_catalog_info_s SET ID_CARD = CONCAT
 (
 SUBSTRING(ID_CARD,1,6),'19',SUBSTRING(ID_CARD,7,9),SUBSTRING('10X98765432',
 (CAST(SUBSTRING(ID_CARD,1,1)AS SIGNED)*7+
 CAST(SUBSTRING(ID_CARD,2,1)AS SIGNED)*9+
 CAST(SUBSTRING(ID_CARD,3,1)AS SIGNED)*10+
 CAST(SUBSTRING(ID_CARD,4,1)AS SIGNED)*5+
 CAST(SUBSTRING(ID_CARD,5,1)AS SIGNED)*8+
 CAST(SUBSTRING(ID_CARD,6,1)AS SIGNED)*4+
 1*2+
 9*1+
 CAST(SUBSTRING(ID_CARD,7,1)AS SIGNED)*6+
 CAST(SUBSTRING(ID_CARD,8,1)AS SIGNED)*3+
 CAST(SUBSTRING(ID_CARD,9,1)AS SIGNED)*7+
 CAST(SUBSTRING(ID_CARD,10,1)AS SIGNED)*9+
 CAST(SUBSTRING(ID_CARD,11,1)AS SIGNED)*10+
 CAST(SUBSTRING(ID_CARD,12,1)AS SIGNED)*5+
 CAST(SUBSTRING(ID_CARD,13,1)AS SIGNED)*8+
 CAST(SUBSTRING(ID_CARD,14,1)AS SIGNED)*4+
 CAST(SUBSTRING(ID_CARD,15,1)AS SIGNED)*2)%11+1,1))
 WHERE LENGTH(ID_CARD)=15;
 

3、执行后结果。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heiqi_whf

感觉对同学有帮助就打个赏呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值