SQL 身份证约束.doc_第1页
SQL 身份证约束.doc_第2页
SQL 身份证约束.doc_第3页
SQL 身份证约束.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

因在数据库中设计一个字段,存储身份信息,网上找不到好的方法来不允许不合法的身份号码存储到记录中,编者只有自己写了一个只允许在数据库中输入合法身份证的约束,供大家参考在设计身份证约束前,我们先设计出生日期的约束首先,在表中建立一个字段,下面以IDCardNumber_Birthday为例,字段类型为 nchar(8)打开对象资源管理器,选择要设置约束的表展开,右键点击约束,选择新建约束在CHECK约束界面,点击表达式右边的编辑按钮将以下表达式复制到弹出编辑界面(记得将下列代码中IDCardNumber_Birthday替换为自己的字段名):(IDCardNumber_Birthday like 1-20,90-90-90-10-90-30-9 AND (substring(IDCardNumber_Birthday,(1),(1)=1 AND substring(IDCardNumber_Birthday,(2),(1)=9 OR substring(IDCardNumber_Birthday,(1),(1)=2 AND substring(IDCardNumber_Birthday,(2),(1)=0) AND (substring(IDCardNumber_Birthday,(5),(1)=1 AND substring(IDCardNumber_Birthday,(6),(1)=1 AND substring(IDCardNumber_Birthday,(6),(1)2 OR substring(IDCardNumber_Birthday,(6),(1)=2 AND (substring(IDCardNumber_Birthday,(7),(1)2 OR substring(IDCardNumber_Birthday,(7),(1)=2 AND (substring(IDCardNumber_Birthday,(3),(1)*(10)+substring(IDCardNumber_Birthday,(4),(1)%(4)=(0) OR (substring(IDCardNumber_Birthday,(3),(1)*(10)+substring(IDCardNumber_Birthday,(4),(1)%(4)(0) AND substring(IDCardNumber_Birthday,(8),(1)9) AND (substring(IDCardNumber_Birthday,(7),(1)=3 AND (substring(IDCardNumber_Birthday,(6),(1)=4 OR substring(IDCardNumber_Birthday,(6),(1)=6 OR substring(IDCardNumber_Birthday,(6),(1)=9 OR substring(IDCardNumber_Birthday,(5),(1)=1 AND substring(IDCardNumber_Birthday,(6),(1)=1) AND substring(IDCardNumber_Birthday,(8),(1)=0 OR (substring(IDCardNumber_Birthday,(6),(1)=3 OR substring(IDCardNumber_Birthday,(6),(1)=5 OR substring(IDCardNumber_Birthday,(6),(1)=7 OR substring(IDCardNumber_Birthday,(6),(1)=8 OR substring(IDCardNumber_Birthday,(5),(1)=0 AND substring(IDCardNumber_Birthday,(6),(1)=1 OR substring(IDCardNumber_Birthday,(5),(1)=1 AND substring(IDCardNumber_Birthday,(6),(1)=0 OR substring(IDCardNumber_Birthday,(5),(1)=1 AND substring(IDCardNumber_Birthday,(6),(1)=2) AND substring(IDCardNumber_Birthday,(8),(1)=1 OR substring(IDCardNumber_Birthday,(7),(1)=2 OR substring(IDCardNumber_Birthday,(7),(1)=1)以上表达式将年约束在1900-2099之间,如不需此约束,请删去红色部分下面身份证字段的约束设计,我们都知道,身份证的组成结构是6位地址码,接下来是8位出生日期,然后是3位随机序号(第3位单数为男,双数为女),最后1位校检位,我们先设计一个IDCradNumber字段,类型nchar(18)为避免出现不合法的出生日期,必须使用上面的出生日期约束,只需要将上面代码的substring()函数第二个参数的值加6(出生日期在6位地址码后面),再和校检表达式做AND运算即可表达式如下:(IDCardNumber like 1-61-70-90-90-90-91-20,90-90-90-10-90-30-90-90-90-90-9,X,x AND (substring(IDCardNumber,(7),(1)=1 AND substring(IDCardNumber,(8),(1)=9 OR substring(IDCardNumber,(7),(1)=2 AND substring(IDCardNumber,(8),(1)=0) AND (substring(IDCardNumber,(11),(1)=1 AND substring(IDCardNumber_Birthday,(12),(1)=1 AND substring(IDCardNumber,(12),(1)2 OR substring(IDCardNumber,(12),(1)=2 AND (substring(IDCardNumber,(13),(1)2 OR substring(IDCardNumber,(13),(1)=2 AND (substring(IDCardNumber,(9),(1)*(10)+substring(IDCardNumber,(10),(1)%(4)=(0) OR (substring(IDCardNumber,(9),(1)*(10)+substring(IDCardNumber,(10),(1)%(4)(0) AND substring(IDCardNumber,(14),(1)9) AND (substring(IDCardNumber,(13),(1)=3 AND (substring(IDCardNumber,(12),(1)=4 OR substring(IDCardNumber,(12),(1)=6 OR substring(IDCardNumber,(12),(1)=9 OR substring(IDCardNumber,(11),(1)=1 AND substring(IDCardNumber,(12),(1)=1) AND substring(IDCardNumber,(14),(1)=0 OR (substring(IDCardNumber,(12),(1)=3 OR substring(IDCardNumber,(12),(1)=5 OR substring(IDCardNumber,(12),(1)=7 OR substring(IDCardNumber,(12),(1)=8 OR substring(IDCardNumber,(11),(1)=0 AND substring(IDCardNumber,(12),(1)=1 OR substring(IDCardNumber,(11),(1)=1 AND substring(IDCardNumber,(12),(1)=0 OR substring(IDCardNumber,(11),(1)=1 AND substring(IDCardNumber,(12),(1)=2) AND substring(IDCardNumber,(14),(1)=1 OR substring(IDCardNumber,(13),(1)=2 OR substring(IDCardNumber,(13),(1)=1)AND (substring(IDCardNumber,(18),(1)x or substring(IDCardNumber,(18),(1)X) and (substring(IDCardNumber,(1),(1)*(7)+ substring(IDCardNumber,(2),(1)*(9) + substring(IDCardNumber,(3),(1)*(10) + substring(IDCardNumber,(4),(1)*(5) + substring(IDCardNumber,(5),(1)*(8) + substring(IDCardNumber,(6),(1)*(4) + substring(IDCardNumber,(7),(1)*(2) + substring(IDCardNumber,(8),(1)*(1) + substring(IDCardNumber,(9),(1)*(6) + substring(IDCardNumber,(10),(1)*(3) + substring(IDCardNumber,(11),(1)*(7) + substring(IDCardNumber,(12),(1)*(9) + substring(IDCardNumber,(13),(1)*(10) + substring(IDCardNumber,(14),(1)*(5) + substring(IDCardNumber,(15),(1)*(8) + substring(IDCardNumber,(16),(1)*(4) + substring(IDCardNumber,(17),(1)*(2)%11= (12-substring(IDCardNumber,(18),(1)%11) or (substring(IDCardNumber,(18),(1)=x or substring(IDCardNumber,(18),(1)=X) and (substring(IDCardNumber,(1),(1)*(7)+ substring(IDCardNumber,(2),(1)*(9) + substring(IDCardNumber,(3),(1)*(10) + substring(IDCardNumber,(4),(1)*(5) + substring(IDCardNumber,(5),(1)*(8) + substring(IDCardNumber,(6),(1)*(4) + substring(IDCardNumber,(7),(1)*(2) + substring(IDCardNumber,(8),(1)*(1) + substring(IDCardNumber,(9),(1)*(6) + substring(IDCardNumber,(10),(1)*(3) + substring(IDCardNumber,(11),(1)*(7) + substring(IDCardNumber,(12),(1)*(9) + substring(IDCardNumber,(13),(1)*(10) + substring(IDCardNumber,(14),(1)*(5) + substring(IDCardNumber,(15),(1)*(8) + sub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论