当前位置: 首页 > news >正文

MySQL 查询不正确身份证号的方法

基本身份证验证查询

SELECT *
FROM base_student 
WHERE -- 长度不是15位或18位LENGTH(idcard) NOT IN (15, 18)OR-- 包含非数字和X字符idcard REGEXP '[^0-9X]'OR-- 18位身份证但最后一位不是数字或X(LENGTH(idcard) = 18 AND RIGHT(idcard, 1) NOT REGEXP '[0-9X]')OR-- 15位身份证但包含非数字字符(LENGTH(idcard) = 15 AND idcard REGEXP '[^0-9]');

更严格的身份证验证查询

如果你需要更严格的验证(包括校验位验证),可以使用以下查询:

SELECT *
FROM base_student 
WHERE -- 基本格式验证(LENGTH(idcard) NOT IN (15, 18)OR idcard REGEXP '[^0-9X]'OR (LENGTH(idcard) = 18 AND RIGHT(idcard, 1) NOT REGEXP '[0-9X]')OR (LENGTH(idcard) = 15 AND idcard REGEXP '[^0-9]'))OR-- 日期部分验证(针对18位身份证)(LENGTH(idcard) = 18 AND (-- 提取日期部分并验证STR_TO_DATE(SUBSTR(idcard, 7, 8), '%Y%m%d') IS NULLOR SUBSTR(idcard, 7, 8) < '19000101'OR SUBSTR(idcard, 7, 8) > DATE_FORMAT(NOW(), '%Y%m%d')))OR-- 日期部分验证(针对15位身份证)(LENGTH(idcard) = 15 AND (-- 提取日期部分并验证STR_TO_DATE(CONCAT('19', SUBSTR(idcard, 7, 6)), '%Y%m%d') IS NULLOR CONCAT('19', SUBSTR(idcard, 7, 6)) < '19000101'OR CONCAT('19', SUBSTR(idcard, 7, 6)) > DATE_FORMAT(NOW(), '%Y%m%d')));

分区验证查询(推荐)

如果你想知道具体哪些记录不符合哪种验证规则,可以使用以下分区验证:

SELECT id,name,idcard,CASE WHEN LENGTH(idcard) NOT IN (15, 18) THEN '长度错误'WHEN idcard REGEXP '[^0-9X]' THEN '包含非法字符'WHEN LENGTH(idcard) = 18 AND RIGHT(idcard, 1) NOT REGEXP '[0-9X]' THEN '18位身份证最后一位错误'WHEN LENGTH(idcard) = 15 AND idcard REGEXP '[^0-9]' THEN '15位身份证包含非数字字符'WHEN LENGTH(idcard) = 18 AND STR_TO_DATE(SUBSTR(idcard, 7, 8), '%Y%m%d') IS NULL THEN '18位身份证日期部分无效'WHEN LENGTH(idcard) = 15 AND STR_TO_DATE(CONCAT('19', SUBSTR(idcard, 7, 6)), '%Y%m%d') IS NULL THEN '15位身份证日期部分无效'ELSE '其他错误'END AS error_type
FROM base_student 
WHERE LENGTH(idcard) NOT IN (15, 18)OR idcard REGEXP '[^0-9X]'OR (LENGTH(idcard) = 18 AND RIGHT(idcard, 1) NOT REGEXP '[0-9X]')OR (LENGTH(idcard) = 15 AND idcard REGEXP '[^0-9]')OR (LENGTH(idcard) = 18 AND STR_TO_DATE(SUBSTR(idcard, 7, 8), '%Y%m%d') IS NULL)OR (LENGTH(idcard) = 15 AND STR_TO_DATE(CONCAT('19', SUBSTR(idcard, 7, 6)), '%Y%m%d') IS NULL);

身份证校验位验证(高级)

对于18位身份证,还可以验证校验位是否正确:

SELECT *
FROM base_student 
WHERE LENGTH(idcard) = 18AND (-- 校验位验证CASE WHEN idcard REGEXP '^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9X]$' THEN-- 计算校验位(SUBSTR('10X98765432', MOD(SUM(SUBSTR(idcard, 1, 1) * 7 +SUBSTR(idcard, 2, 1) * 9 +SUBSTR(idcard, 3, 1) * 10 +SUBSTR(idcard, 4, 1) * 5 +SUBSTR(idcard, 5, 1) * 8 +SUBSTR(idcard, 6, 1) * 4 +SUBSTR(idcard, 7, 1) * 2 +SUBSTR(idcard, 8, 1) * 1 +SUBSTR(idcard, 9, 1) * 6 +SUBSTR(idcard, 10, 1) * 3 +SUBSTR(idcard, 11, 1) * 7 +SUBSTR(idcard, 12, 1) * 9 +SUBSTR(idcard, 13, 1) * 10 +SUBSTR(idcard, 14, 1) * 5 +SUBSTR(idcard, 15, 1) * 8 +SUBSTR(idcard, 16, 1) * 4 +SUBSTR(idcard, 17, 1) * 2), 11) + 1, 1) <> UPPER(RIGHT(idcard, 1))ELSE TRUEEND);


文章转载自:

http://ZHWEpq1N.jxfmn.cn
http://zFOWKjiy.jxfmn.cn
http://SHGEBQVB.jxfmn.cn
http://gLDGkDh0.jxfmn.cn
http://o5TzCYni.jxfmn.cn
http://vgTuv2oO.jxfmn.cn
http://Nh3J6O8H.jxfmn.cn
http://zGEmrfwv.jxfmn.cn
http://Vhc7Hi4h.jxfmn.cn
http://47oMaPqs.jxfmn.cn
http://OHAjYYaQ.jxfmn.cn
http://7f26fDyG.jxfmn.cn
http://8xBZQhUg.jxfmn.cn
http://344dTR2L.jxfmn.cn
http://9qhfdzrZ.jxfmn.cn
http://U6GvIFDr.jxfmn.cn
http://w14fn4vE.jxfmn.cn
http://ADUOUzA4.jxfmn.cn
http://BUVKAYCZ.jxfmn.cn
http://qsWuUGu7.jxfmn.cn
http://3v6gY9Wl.jxfmn.cn
http://AY7A90L5.jxfmn.cn
http://qruCITwr.jxfmn.cn
http://3Wv5LV2C.jxfmn.cn
http://zBlimEXr.jxfmn.cn
http://qxHIdJ1V.jxfmn.cn
http://o6kB0I2z.jxfmn.cn
http://JyU3P7Sq.jxfmn.cn
http://PokLL1Ri.jxfmn.cn
http://wp8haHuq.jxfmn.cn
http://www.dtcms.com/a/380637.html

相关文章:

  • 淘宝商品详情 API 的安全强化与生态协同创新路径
  • 全志A133 android10 secure boot 安全启动
  • 储能电站的监控运维软件推荐,降低运营成本
  • 麒麟v10系统内存不足
  • fpga图像处理
  • 使用netstat 获取各Oracle数据库实例对应应用IP地址脚本
  • QT M/V架构开发实战:QAbstractItemModel介绍
  • PHP 与 WebAssembly 的 “天然隔阂”
  • QML 的第一步
  • IP验证学习之env集成编写
  • Android8 binder源码学习分析笔记(四)——ServiceManager启动
  • fastapi搭建Ansible Playbook执行器
  • 第四阶段C#通讯开发-1:通讯基础理论,串口,通讯模式,单位转换,代码示例
  • 微信小程序——云函数【使用使用注意事项】
  • 【java】常见排序算法详解
  • HarmonyOS 应用开发深度解析:基于声明式UI的现代化状态管理实践
  • Linux 中 exec 等冷门命令的执行逻辑探究
  • Qt多语言翻译实战指南:常见陷阱与动态切换解决方案
  • 【秋招笔试】2025.09.11阿里云秋招算法岗笔试真题
  • Ethernaut Level 1: Fallback - 回退函数权限提升攻击
  • 【VPX637】基于XCKU115 FPGA+ZU15EG MPSOC的6U VPX双FMC接口通用信号处理平台
  • Flutter基础(②④事件回调与交互处理)
  • 软考系统架构设计师之软件架构篇
  • 软考-系统架构设计师 访问控制和数字签名技术详细讲解
  • C语言初学者笔记【预处理】
  • android中ViewModel 和 onSaveInstanceState 的最佳使用方法
  • 达梦:将sql通过shell脚本的方式放在后台执行
  • 进阶向:从零开始理解Python音频处理系统
  • Centos7安装nginx
  • 数字图像处理-巴特沃斯高通滤波、低通滤波