当前位置:首页 » 编程语言 » sql身份证号码验证
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql身份证号码验证

发布时间: 2023-04-24 10:29:35

sql 中身份证编码与出生日期验证

根据身份证号验证出生日期:

alter table 你的表--修改表
/*添加约束 要么删掉你之前的生日约束 要么把
约束开始到结束复制到你的约束里再改*/
add constraint CK_生日 check(

--约束开始
convert(datetime,replace(stuff(stuff(right (left(char之类类型的18位的身份证号,14),8),5,0,'-'),8,0,'-'),'0',''))=生日字段
--约束结束

)

最后只要把中文替换掉就可以了

⑵ 如何用SQL语言写一个触发器,实现身份证号码位数的判断。

CREATE TRIGGER mod_test ON dbo.tablename
FOR UPDATE
AS
declare @errno int, @errmsg varchar(255)

if (select len(身份证) from inserted) not in (0,18)
begin
select @errno = 50001, @errmsg = '身份证号码不等于18位,请检查!! '
goto error
end
return
error:
raiserror @errno @errmsg
rollback transaction

⑶ 如何通过SQL语言检索身份证号的尾号验证

不是很理解你的意思、、检索尾号为1

select*fromtablewhereidcardlike'%1'

⑷ sql中判断身份证号码的出生年月是否正确合法

好办呀 oracle-sql
select substr(身份证号,7,8) from al;

这样取出的就是出生年月日了

⑸ 求SQL加入身份证号验证第18位的方法

身份证号码是每一个公民终身不变的号码,不要查询使用他人的身份号码,请使用自己的身份号码,否则会负法律责任。

⑹ sql 语句 验证身份证号码

帮你搜了一下,参考参考。

主要验证SQL数据库中已输入的15位 及18位 身份证号码的位数、出生年月日是否正确,
可以过滤出大部分的输入错误。

or (len(身份证号)=18 and (Substring(身份证号,7,2)<'19' or Substring(身份证号,7,2)>'20'
or (Substring(身份证号,11,2)>12)
or (Substring(身份证号,11,2) in (01,03,05,07,08,10,12) and Substring(身份证号,13,2)>31)
or (Substring(身份证号,11,2) in (04,06,09,11) and Substring(身份证号,13,2)>30)
or (Substring(身份证号,11,2)=02 and Substring(身份证号,13,2)>29)))
---------------------- 下面是针对 15位 及18位 身份证号码性别的验证语句 ------------------

-- Access 不支持 Substring 查询,可以替换为 mid 查询。
select 序号,姓名,身份证号,性别
from 身份表
where (((len(身份证号)=15) and (Substring(身份证号,15,1) in (1,3,5,7,9)) and 性别<>'男')
or ((len(身份证号)=15) and (Substring(身份证号,15,1) in (2,4,6,8,0)) and 性别<>'女'))
or (((len(身份证号)=18) and (Substring(身份证号,17,1) in (1,3,5,7,9)) and 性别<>'男')
or ((len(身份证号)=18) and (Substring(身份证号,17,1) in (2,4,6,8,0)) and 性别<>'女'))

---------------------- 下面是针对 15位 及18位 身份证号码位数与出生年月日的验证 ------------------

-- Access 不支持 Substring 查询,可以替换为 mid 查询。

select 序号,姓名,身份证号,性别
from 身份表
where (len(身份证号)<>15 and len(身份证号)<>18)
or (len(身份证号)=15 and ((Substring(身份证号,9,2)>12)
or (Substring(身份证号,11,2) > 31)
or (Substring(身份证号,9,2) in (01,03,05,07,08,10,12) and Substring(身份证号,11,2)>31)
or (Substring(身份证号,9,2) in (04,06,09,11) and Substring(身份证号,11,2)>30)
or (Substring(身份证号,9,2)=02 and Substring(身份证号,11,2)>29)))

⑺ SQL函数验证身份证号码是否有效

SQL函数验证身份证号码是否有效
比如身份证号在C列,D2:
=IF(MID("10X98765432",MOD(SUM(MID(C2,{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17},1)*2^(18-{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17})),11)+1,1)=RIGHT(C2),"身份证正确","身份证错误")
数组公式,按CTRL+SHIFT+回车结束,下拉。

⑻ sql sever 2008r2 中如何批量判断身份证真假

--建议你做成一个自定义函数,然后再调用
--区域编码的验证,你得有csounty_sar这个表才行,所以下面的代码,我去掉了这个
Declare@pspt_idVarchar(18)='52212019880722042X'
Select
case
/*判断身份证号码是否为18位*/
whenlen(@pspt_id)<>'18'then'身份证号码位数不对'
/*判断身份证号码前17位是否含除数字外的字符*/
whenISNUMERIC(substring(@pspt_id,1,17))=0then'身份证号码前17位格式不正确'
/*判断身份证的年份是否在合理范围内*/
whensubstring(@pspt_id,7,4)notbetween'1900'and'2014'then'身份证年份错误'
/*判断身份证的月份是否在合理范围内*/
whensubstring(@pspt_id,11,2)notbetween'01'and'12'then'身份证月份错误'
/*判断身份证日期是否在合理范围内*/
whenisdate(substring(@pspt_id,7,8))=0then'身份证日期错误'
/*判断身份证号码的第18位是否符合验证规则*/
when
(
substring(@pspt_id,1,1)*7+
substring(@pspt_id,2,1)*9+
substring(@pspt_id,3,1)*10+
substring(@pspt_id,4,1)*5+
substring(@pspt_id,5,1)*8+
substring(@pspt_id,6,1)*4+
substring(@pspt_id,7,1)*2+
substring(@pspt_id,8,1)*1+
substring(@pspt_id,9,1)*6+
substring(@pspt_id,10,1)*3+
substring(@pspt_id,11,1)*7+
substring(@pspt_id,12,1)*9+
substring(@pspt_id,13,1)*10+
substring(@pspt_id,14,1)*5+
substring(@pspt_id,15,1)*8+
substring(@pspt_id,16,1)*4+
substring(@pspt_id,17,1)*2
)%11
<>
(
case
whensubstring(@pspt_id,18,1)='1'then'0'
whensubstring(@pspt_id,18,1)='0'then'1'
whensubstring(@pspt_id,18,1)in('X','x')then'2'
whensubstring(@pspt_id,18,1)='9'then'3'
whensubstring(@pspt_id,18,1)='8'then'4'
whensubstring(@pspt_id,18,1)='7'then'5'
whensubstring(@pspt_id,18,1)='6'then'6'
whensubstring(@pspt_id,18,1)='5'then'7'
whensubstring(@pspt_id,18,1)='4'then'8'
whensubstring(@pspt_id,18,1)='3'then'9'
whensubstring(@pspt_id,18,1)='2'then'10'
end
)
then'身份证验证错误'Else'正确'EndAs结果

⑼ sql如何判断一串数字非身份证号码

1.身份证号码生成是有规则的,利用此规则在程序端就可以控制的;

2.若是查证一个身份证号码是否在数据库中,直接创建一个唯一索引,念扮然后SELECT查询即可仔埋灶;

3.身份证是有规则的,可以判断头部是否符合库能查到,以及中间液氏8位数字是否符合年月日的规则,身份证的字符个数。

⑽ 通过sql判别身份证号的性别,并与表中的性别列进行比对,来判断是否录入错误

1、15位身份证号
15位身份证号编码格式:6位地区编码+2位出生年份+2位出生月份+2位出生日期+3位流水号

其中3位流水号的最后一个为单数的则为男性,双数或零的为女性

2、18位身份证号
18位身份证号编码格式:6位地区编码+4位出生年份+2位出生月份+2位出生日期+3位流水号+1位校验码

其中3位流水号的最后一个为单数的则为男性,双数或零的为女性
1位校验码的规则是:

将前面的身份证号码17位数分别乘以不同的系数。第i位对应的数为[2^(18-i)]mod11。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;
2、将这17位数字和系数相乘的结果相加;
3、用加出来和除以11,看余数是多少?;
4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2;
通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2;
例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。
首先:我们得出,前17位的乘积和是189
然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。
最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

PHP 计算公式:
$card="xxx";//身份证号码
$map=array(1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2);
$sum = 0;
for($i = 17; $i > 0; $i--){
$s=pow(2, $i) % 11;
$sum += $s * $card[17-$i];
}
echo $map[$sum % 11];//这里显示最后一位校验码