一. 适用场景
在日常表单信息填写的过程中,我们为了减少用户需要填写,只需要用户填写身份证号码,其他信息再根据身份证号码,自行处理获得。在处理过程中,考虑到一代身份证的存在,进行了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
)