mysql从身份证号中提取生日、性别

本文提供了一段SQL代码,用于从数据库中查询用户的身份证号码,并从中提取出生日期和性别信息。该查询仅针对长度为15位或18位的有效身份证号码。

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

 1 SELECT
 2     p.ID,
 3     p.IDCardNo,
 4 IF (
 5     LENGTH(p.IDCardNo) = 18,
 6     CAST(
 7         SUBSTRING(p.IDCardNo, 7, 8) AS DATETIME
 8     ),
 9     CAST(
10         CONCAT(
11             '19',
12             SUBSTRING(p.IDCardNo, 7, 6)
13         ) AS DATETIME
14     )
15 ) AS Birthday,
16 IF (
17     SUBSTR(
18         p.IDCardNo,
19         LENGTH(p.IDCardNo) - 1,
20         1
21     ) % 2 = 1,
22     '',
23         ''
24 ) AS sex
25 FROM
26     users p
27 WHERE
28     p.IsDelete = 2
29 AND p.IDCardNo REGEXP '[1-8][0-8][0-9]{16}|[1-8][0-8][0-9]{15}X|[1-8][0-8][0-9]{13}'
30 AND (
31     length(p.IDCardNo) = 18
32     OR LENGTH(p.idcardno) = 15
33 )

 ps: 此处身份证号正确性未做非常严谨的验证

转载于:https://www.cnblogs.com/ImaY/p/5717334.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值