标签:
在一些人员信息收录的系统中,可能会要求填入人员的身份证号码,但要怎么来验证填入的身份证号码的格式是否合法呢。我们将验证的sql写成一个存储过程,以方便重复调用。
首先我们要清楚我国身份号码的组成规则:
1,18位身份证号码的组成:6位地区编码+8位出生年月日+3位编号(奇数代表男,偶数代表女)+1位校验码
2,15位身份证号码的组成:6位地区编码+6位出生年月日+3位编号(奇数代表男,偶数代表女)
下面是该存储过程的所有sql
创建完毕后,我们可以使用以下sql调用来测试是否正确:
返回1,代表身份证号码正确,
返回0,代表身份证号码错误。
简单讲解一下以上用到的系统函数意思:
POWER函数:返回给定表达式的指定幂的值。
比如:select POWER(2,3),就返回2的3次幂,即8
LOWER函数:将大写字符数据转换成小写后返回字符表达式。
比如:select LOWER(‘ABC‘),返回‘abc‘
substring函数:返回 $sourceString 的子串,从 $startingLoc 指定的位置开始,长度为 $length 指定的字符数。
比如:select substring(‘abcd‘,1,2),返回‘ab‘
注意:该函数非常有趣
1,$sourceString参数的索引从1开始计。
2,如果你是从0位置开始取值,也不会错,但只会返回‘a‘
3,如果你是从-1位置开始取值,也不会错,但返回空,但把$length数据填大一些,又会返回值了。
从上面的测试应该可以得出,如果$startingLoc小于或等于0,那么,substring的参数变成了
string($sourceString ,1,$length-1+$startingLoc )
即select substring(‘abcd‘,0,2)==select substring(‘abcd‘,1,1),
select substring(‘abcd‘,-1,2)==select substring(‘abcd‘,1,2-1+(-1))
select substring(‘abcd‘,-1,3)==select substring(‘abcd‘,1,3-1+(-1))
不确定公式就是这样的,但返回结果和这个是一样的。
isdate函数:确定输入表达式是否为有效日期。
ISNUMERIC函数:确定表达式是否为有效的数值类型。
CONVERT函数:将一种数据类型的表达式显式转换为另一种数据类型的表达式。
标签:
原文地址:http://www.cnblogs.com/yzxj/p/5096313.html