1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > mysql身份证校验码_mysql正则表达式验证身份证 并获取年龄 生日 性别

mysql身份证校验码_mysql正则表达式验证身份证 并获取年龄 生日 性别

时间:2021-11-11 00:00:16

相关推荐

mysql身份证校验码_mysql正则表达式验证身份证 并获取年龄 生日 性别

mysql正则表达式验证身份证,并获取年龄、生日、性别

发布时间:-05-17 16:28,

浏览次数:4844

, 标签:

mysql正则表达式,mysql验证身份证,REGEXP

mysql是支持正则表达式的(REGEXP)。

创建身份信息表:

DROP TABLE IF EXISTS `card`;

CREATE TABLE `card` (

`id` int(14) NOT NULL AUTO_INCREMENT,

`card_id` varchar(18) DEFAULT NULL,

`name` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

插入一条数据:

insert into `card`(`id`,`card_id`,`name`) values (1,'52040219770325X064','李四');

下面mysql语句即可查询出card为身份证号的记录

(18位纯数字,17位纯数字+X,15位纯数字)

select * from table where card REGEXP '[0-9]{18}|[0-9]{17}X|[0-9]{15}'

更精确的正则表达式写法是:

select * from table where cardregexp '^[1-9][[:digit:]]{7}((0[[:digit:]])|(1[0-2]))(([0|1|2][[:digit:]])|3[0-1])[[:digit:]]{3}$|^[1-9][[:digit:]]{5}[1-9][[:digit:]]{3}((0[[:digit:]])|(1[0-2]))(([0|1|2][[:digit:]])|3[0-1])[[:digit:]]{3}([0-9]|X)$'

获得年龄、出生日期、性别:

SELECT card_id,CAST(SUBSTRING(card_id,7,8) AS DATETIME) AS bir,FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(SUBSTRING(card_id,7,8) AS DATETIME)),'%m-%d') AS TIME,IF(LEFT(SUBSTRING(card_id,17),1)%2=1,"男","女") AS sex FROM card

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。