mysql身份证校验码_MySql整理篇之身份证提取生日性别
应用场景
某些场景中,需要从国人身份证号中提取出生日期及性别,现整理出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 '' = idno THEN RETURN NULL; END IF;
IF LENGTH(idno) = 18 THEN
SET v_birth = SUBSTRING(idno,7,8);
SET v_birth_1 = LEFT(v_birth,4);
SET v_birth_2 = RIGHT(v_birth,4);
SET v_birth = CONCAT(v_birth_1,'-',LEFT(v_birth_2,2),'-',RIGHT(v_birth_2,2));
RETURN v_birth;
END IF;
IF LENGTH(idno) = 15 THEN
SET v_birth = CONCAT('19',SUBSTRING(idno,7,6));
SET v_birth_1 = LEFT(v_birth,4);
SET v_birth_2 = RIGHT(v_birth,4);
SET v_birth = CONCAT(v_birth_1,'-',LEFT(v_birth_2,2),'-',RIGHT(v_birth_2,2));
RETURN v_birth;
END IF;
RETURN NULL;
END$$
DELIMITER ;
性别提取
通过创建函数fun_idno_sex获取,具体代码如下:
DELIMITER $$
DROP FUNCTION IF EXISTS fun_idno_sex$$
CREATE FUNCTION fun_idno_sex(idno VARCHAR(25)) RETURNS VARCHAR(10) CHARSET utf8
BEGIN
DECLARE v_num VARCHAR(10) DEFAULT NULL;
IF idno IS NULL OR '' = idno THEN RETURN NULL; END IF;
-- 倒数第二位为性别
IF LENGTH(idno) = 18 THEN
SET v_num = LEFT(RIGHT(idno,2),1);
IF v_num % 2 = 0 THEN RETURN '0';-- 偶女
ELSE RETURN '1';-- 奇男
END IF;
END IF;
-- 倒数第一位为性别
IF LENGTH(idno) = 15 THEN
SET v_num = RIGHT(idno,1);
IF v_num % 2 = 0 THEN RETURN '0';-- 偶女
ELSE RETURN '1';-- 奇男
END IF;
END IF;
RETURN NULL;
END$$
DELIMITER ;
使用方法
直接在逻辑中使用,传递证件号作为参数。
SELECT fun_idno_birthday('52022119890408407X');
SELECT fun_idno_birthday('370986890623212');
SELECT fun_idno_sex('52022119890408407X');
SELECT fun_idno_sex('370986890623212');
注意: fun_idno_sex返回值:0-女 1-男,NULL为非有效证件号
mysql身份证校验码_MySql整理篇之身份证提取生日性别相关推荐
- mysql身份证校验码_mysql正则表达式验证身份证,并获取年龄、生日、性别
mysql正则表达式验证身份证,并获取年龄.生日.性别 发布时间:2018-05-17 16:28, 浏览次数:4844 , 标签: mysql正则表达式,mysql验证身份证,REGEXP mysq ...
- mysql 单标递归_MySql整理篇之递归
问题:Mysql递归实现 方式一:存储过程,方式二:函数 本文再其基础之上考研效率问题,只在乎实现的同学参考大侠的足矣,想继续提高效率的可继续阅读.再参考博文中,大侠已说明,推介方式二(函数)实现,下 ...
- mysql身份证校验码_用sql实现18位身份证校验代码分享 身份证校验位计算
身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 ...
- mysql 字符集 校验规则_MySQL字符集及校验规则
1.字符集 # Mysql 的字符集有4个级别的默认设置:服务器级,数据库级,表级和字段级,客户端交互时,也可以指定字符集 # 字符集:是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称, ...
- 【转载】用Python计算身份证校验码
原来的天朝良民证是15位,构成如下: 1-6位:地址码.采用的是行政区划代码,可以去 统计局的网站 查. 7-12位:生日期码.构成为yymmdd. 13-15位:顺序码.每个地区 ...
- 用Python计算身份证校验码
转自:http://my.oschina.net/moooofly/blog/147958 原来的天朝良民证是15位,构成如下: 1-6位:地址码.采用的是行政区划代码,可以去 统计局的网站 查. ...
- sql判断邮箱是否合法_分享一个oracle身份证校验函数,判断你的身份证是否合法...
概述 有个朋友说能不能用函数来实现对身份证的校验,所以这里用Oracle的函数来实现,其他数据库异曲同工.. 身份证校验函数 CREATE OR REPLACE FUNCTION Func_check ...
- mysql经典总结文章_MySQL基础篇(01):经典实用查询案例,总结整理
MySQL基础篇(01):经典实用查询案例,总结整理 发布时间:2020-02-26 22:25:21 来源:51CTO 阅读:244 作者:知了一笑 本文源码:GitHub·点这里 || GitEE ...
- mysql身份证校验码_sql 语句 验证身份证号码
展开全部 像这样写个视图就行了: create View eVMutiCard AS Select a.Badge,a.Name,a.DepID,a.Compid,a.JobID,a.Status,a ...
- mysql改国标码_MySQL 优化实施方案
优化的哲学 优化风险 优化设计到变更,变更就有风险 优化方向 在数据库优化上有两个主要方面:即安全与性能.(CAP) 安全 ---> 数据可持续性 一致 性能 ---> 数据的高性能访问 ...
最新文章
- 【BZOJ2117】 [2010国家集训队]Crash的旅游计划
- 如何把纯真ip数据库导入到MySQL数据表中
- R语言-向量自回归模型VAR的实现
- Linux-常用系统管理命令
- A*B NTT快速数论变换
- [css] 写出固定子容器在固定的父容器下水平垂直居中的布局
- php计算购置税1007无标题,新旧个税计算公式对比–ps:世界上最好的语言PHP
- linux 查看是否安装perl模块
- petshop学习笔记(1)
- Android中关于Volley的使用(一)加载图片
- springmvc项目在启动完成之后执行一次方法_SpringMVC源码分析
- ivew select组件 DatePicker组件的清空
- thinkphp页面请求时间超过40S报404错误解决办法
- OOM框架AutoMapper基本使用(2)
- 如何写一个NES模拟器(一)
- 自尊是人生的高尚境界
- 54/74系列逻辑芯片
- 高一计算机课的总结,高中《信息技术》期末教学总结范文
- 【javascript】车标JSON格式--汽车品牌JSON格式
- Java面试题 基本类型和包装类对象使用 == 和 equals进行比较的结果?
热门文章
- ffmpeg使用说明书
- 通信系列2: 深入浅出SIP协议
- 列线图实现预测模型可视化
- mm,mil,inch,um的转换关系
- Reed-Solomon纠错码(RS码)(里德-所罗门码)
- html 菜鸟驿站,菜鸟驿站
- 风尚云网学习-css实现文字超出隐藏为省略号...
- maven配置smartupload_用jspsmartupload实现Jsp多文件上传下载,并解...
- GeoNet: Deep Geodesic Networks for Point Cloud Analysis
- 最热BMS可直接下载!!