mysql身份证校验码_MySql整理篇之身份证提取生日性别

这篇博客介绍了如何在MySQL中通过自定义函数fun_idno_birthday和fun_idno_sex,从15位和18位的身份证号码中提取出生日期和性别。18位身份证的第7到14位代表出生年月日,第17位表示性别;15位身份证的第7到12位代表出生年月,最后一位区分性别。提供的函数可以方便地在MySQL中进行身份证信息的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景

某些场景中,需要从国人身份证号中提取出生日期及性别,现整理出MySql版本的提取方法,了解其规则后,其他数据库异曲同工。

目前国人身份证分为一代和二代,一代15位,二代18为。基本区分如下:

18位证件号

1~6位为地区省市县编码,7~14位出生年月日,15~16所在地派出所,17位性别(奇男、偶女),18位为校验码

15位证件号

1~6位为地区省市县编码,7~12位出生年月日(年为两位),13~15为顺序码,末位区分男女(奇男、偶女)。

解决方案

解决方案为根据证件号规则,创建两个函数:fun_idno_birthday、fun_idno_sex提取。

出生日期提取

通过创建函数fun_idno_birthday获取,具体代码如下:

DELIMITER $$

DROP FUNCTION IF EXISTS fun_idno_birthday$$

CREATE FUNCTION fun_idno_birthday(idno VARCHAR(25)) RETURNS VARCHAR(10) CHARSET utf8

BEGIN

DECLARE v_birth VARCHAR(10) DEFAULT NULL;

DECLARE v_birth_1 VARCHAR(10) DEFAULT NULL;

DECLARE v_birth_2 VARCHAR(10) DEFAULT NULL;

IF idno IS NULL OR ''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值