MySQL根据身份证号码获取年龄和性别查询函数

一. 适用场景

在日常表单信息填写的过程中,我们为了减少用户需要填写,只需要用户填写身份证号码,其他信息再根据身份证号码,自行处理获得。在处理过程中,考虑到一代身份证的存在,进行了15位和18位的兼容,防止15位的身份证号码存在,致使系统报错。

二. 按照身份证号信息获取性别数量统计查询

代码如下:

//按照身份证号信息获取性别统计
SELECT
	sex,
	COUNT( sex ) num 
FROM
	(
	SELECT
		IDCardNo,
	CASE
			WHEN length( IDCardNo ) = 15 
			AND MOD ( substring( IDCardNo, 15, 1 ), 2 ) = 0 THEN
				'女' 
				WHEN length( IDCardNo ) = 15 
				AND MOD ( substring( IDCardNo, 15, 1 ), 2 ) = 1 THEN
					'男' 
					WHEN length( IDCardNo ) = 18 
					AND MOD ( substring( IDCardNo, 17, 1 ), 2 ) = 0 THEN
						'女' 
						WHEN length( IDCardNo ) = 18 
						AND MOD ( substring( IDCardNo, 17, 1 ), 2 ) = 1 THEN
							'男' ELSE NULL 
						END sex 
			FROM
				dr_1_form_register 
			WHERE
			( LENGTH( IDCardNo )= 15 OR LENGTH( IDCardNo )= 18 )) a 
	GROUP BY
	sex

三. 按照身份证号信息获取年龄以及生日查询

代码如下:

// 按照身份证号信息获取年龄以及生日查询
SELECT
	title,
	IDCardNo,
	DATE_FORMAT( substring( IDCardNo, 7, 8 ), '%Y-%m-%d' ) AS birthday,
	(
		substring( now(), 1, 4 )- substring( IDCardNo, 7, 4 ))-(
		substring( IDCardNo, 11, 4 )- date_format( now(), '%m%d' )> 0 
	) AS age 
FROM
	dr_1_form_register 
WHERE
	(
		substring( now(), 1, 4 )- substring( IDCardNo, 7, 4 ))-(
	substring( IDCardNo, 11, 4 )- date_format( now(), '%m%d' )> 0 
	)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值