我司一个员工需要一个验证身份证的函数,他自己写了一个MySQL版本的函数验证,因为他对PosgreSQL函数不熟悉,所以就让我这边给他写一个一样功能的PosgreSQL版本给他,其实大部分函数是类似的,仿写一样也是简单的。
MySQL版本
CREATE FUNCTION `checksfz`(yhsfz VARCHAR(40)) RETURNS varchar(30) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE
result VARCHAR(30);
set result =
case
-- 判断身份证号码是否为18位
when (length(yhsfz)) <>18 then '身份证号码必须为18位'
-- 判断身份证号码前17位是否含除数字外的字符
when (substring(yhsfz,1,17) REGEXP '[^0-9]') = 1 then '身份证号码前17位格式不正确'
-- 判断身份证的年份是否在合理范围内
when substring(yhsfz,7,4) not between '1900' and YEAR(NOW()) then '身份证年份错误'
-- 判断身份证的月份是否在合理范围内
when substring(yhsfz,11,2) not between '01' and '12' then '身份证月份错误'
-- 判断身份证日期是否在合理范围内
when substring(yhsfz,13,2) not between 1 and day(DATE_SUB(date_add(str_to_date(CONCAT(substring(yhsfz,7,4),'-',substring(yhsfz,11,2),'-01'),'%Y-%m-%d'), interval 1 MONTH) ,INTERVAL 1 DAY )) then '
身份证验证函数

本文介绍了一个用于验证身份证号码的函数,分别提供了MySQL和PosgreSQL两个版本的实现方式,并针对Greenplum数据库进行了细微调整。
最低0.47元/天 解锁文章
1752

被折叠的 条评论
为什么被折叠?



