性校验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中实现性校验身份证号码合法性的实践,它可以有效避免无效的登记信息,给系统带来很多好处。以上代码只是一部分,更多的条件可以再多加判断,比如生日匹配,省份校验等。根据实际情况,可以灵活添加一些判断,从而达到更加安全的校验结果。

数据运维技术 » 性校验MSSQL中身份证号码合法性校验实践(mssql 身份证号合法)