对身份证日期以及身份证对应的性别字段进行错误检查

SQLServer State:
1、对身份证日期(年月日)错误进行检查

select  cbfbm,cyzjhm,cyxm ,Substring(cyzjhm,7,4)+'-'+Substring(cyzjhm,11,2)+'-'+Substring(cyzjhm,13,2)
from cbf_jtcy
where (len(cyzjhm)<>15 and len(cyzjhm)<>18)
or (Substring(cyzjhm ,7,2)<19)
or (Substring(cyzjhm ,7,2)>20)
or (Substring(cyzjhm ,11,2)>12)
or (Substring(cyzjhm ,11,2) in (01,03,05,07,08,10,12) and Substring(cyzjhm ,13,2)>31)
or (Substring(cyzjhm ,11,2) in (04,06,09,11) and Substring(cyzjhm ,13,2)>30)
or ((Substring(cyzjhm,7,4) % 4=0 and Substring(cyzjhm,7,4) % 100<>0 or Substring(cyzjhm,7,4) % 400=0) and Substring(cyzjhm ,11,2)=2 and Substring(cyzjhm ,13,2)>29)
or ((Substring(cyzjhm,7,4) % 4<>0 and Substring(cyzjhm,7,4) % 100=0 or Substring(cyzjhm,7,4) % 400<>0) and Substring(cyzjhm ,11,2)=2 and Substring(cyzjhm ,13,2)>28)


2、身份证对应性别错误进行检查

select *
FROM CBF_JTCY
where (((len(CYZJHM)=15) and (Substring(CYZJHM,15,1) in (1,3,5,7,9)) and CYXB<>'1')
or ((len(CYZJHM)=15) and (Substring(CYZJHM,15,1) in (2,4,6,8,0)) and CYXB<>'2'))
or (((len(CYZJHM)=18) and (Substring(CYZJHM,17,1) in (1,3,5,7,9)) and CYXB<>'1')
or ((len(CYZJHM)=18) and (Substring(CYZJHM,17,1) in (2,4,6,8,0)) and CYXB<>'2'))

 注:如果在Access数据库使用该SQL语句,只需将Substring函数改成mid函数,其余不变

转载于:https://www.cnblogs.com/ParanoiaApe/p/7885088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值