性校验MSSQL中身份证号码合法性校验实践(mssql 身份证号合法)
性校验MSSQL中身份证号码合法性校验实践
在我们的日常工作中,我们经常会涉及到对用户的身份信息进行校验的情况,其中身份证号码也不例外。它在我们的系统中使用得很普遍,也可能成为必填字段。所以,如何在MSSQL中校验身份证号码是不是有效就变得尤为重要。
以下是在MSSQL中性校验身份证号码合法性的实践:
1.首先要知道身份证号码由18位数字组成,校验码的求解采用的是ISO 7064:1983,MOD 11-2 校验码系统。
2.首先校验身份证号码的长度,这里使用LEN函数实现:
SELECT
CASE WHEN LEN($IDNO) != 18 THEN '无效:身份证号码长度不正确!'
ELSE '有效' END
FROM identity
3.然后校验身份证号码是否是18位数字:
SELECT
CASE WHEN PATINDEX('%[^0-9]%','$IDNO' != 0) THEN '无效:身份证号码只能是18位数字!'
ELSE '有效' END
FROM identity
4.最后,校验身份证号码的校验码:
DECLARE
@validBit BIT = 0 ,@a int
,@sum int ,@last int
,@j int ,@y int
,@c_num int
SET @sum = 0 SET @j = 17
SET @y = 2 SET @c_num = 0
WHILE @j > 0 BEGIN
SET @a = SubString($IDNo,@j,1) SET @sum = @sum + @a * @y
SET @y += 1 SET @j -= 1
IF @y > 8 BEGIN
SET @y = 2 END
END
SET @last = SubString($IDNO,18,1)SET @c_num = 12 - @sum % 11
IF @c_num = 10 BEGIN
IF @last = 'X' BEGIN
SET @validbit = 1 END
END ELSE IF CAST(@last as int) = @c_num
BEGIN SET @validbit = 1
END
IF @validbit = 1 BEGIN
SELECT '有效' END
ELSE BEGIN
SELECT '无效:身份证号码校验码不正确!' END
```
以上就是在MSSQL中实现性校验身份证号码合法性的实践,它可以有效避免无效的登记信息,给系统带来很多好处。以上代码只是一部分,更多的条件可以再多加判断,比如生日匹配,省份校验等。根据实际情况,可以灵活添加一些判断,从而达到更加安全的校验结果。