mysql验证身份证号正确_通过SQL校验身份证号码是否正确

根据提供的身份证号码信息验证身份证号码是否符合二代身份证规范,其中区域编码网上可下载。

使用数据库为DB2,但目测可以通用身份证号码第18位验证算法从网上查得,具体验证算法如下:

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;

相关mysql视频教程推荐:《mysql教程》

select

/*pspt_id为用户身份证号码*/

a.pspt_id

/*判断用户身份证是否符合规则*/

,case

/*判断身份证号码是否为18位*/

when length(a.pspt_id)<>'18' then '身份证号码位数不对'

/*判断身份证号码前17位是否含除数字外的字符*/

when translate(substr(a.pspt_id,1,17),'','0123456789') <>'' then '身份证号码前17位格式不正确'

/*判断身份证的年份是否在合理范围内*/

when substr(a.pspt_id,7,4) not between '1900' and '2014' then '身份证年份错误'

/*判断身份证的月份是否在合理范围内*/

when substr(a.pspt_id,11,2) not between '01' and '12' then '身份证月份错误'

/*判断身份证日期是否在合理范围内*/

when substr(a.pspt_id,13,2) not between 1 and day(to_date(char(substr(a.pspt_id,7,4)||'-'||substr(a.pspt_id,11,2)||'-01',10),'yyyy-mm-dd')+1 month-1 day) then '身份证日期错误'

/*判断身份证号码的第18位是否符合验证规则*/

when

mod((

substr(a.pspt_id,1,1)*7+

substr(a.pspt_id,2,1)*9+

substr(a.pspt_id,3,1)*10+

substr(a.pspt_id,4,1)*5+

substr(a.pspt_id,5,1)*8+

substr(a.pspt_id,6,1)*4+

substr(a.pspt_id,7,1)*2+

substr(a.pspt_id,8,1)*1+

substr(a.pspt_id,9,1)*6+

substr(a.pspt_id,10,1)*3+

substr(a.pspt_id,11,1)*7+

substr(a.pspt_id,12,1)*9+

substr(a.pspt_id,13,1)*10+

substr(a.pspt_id,14,1)*5+

substr(a.pspt_id,15,1)*8+

substr(a.pspt_id,16,1)*4+

substr(a.pspt_id,17,1)*2

),11)

<>

(

case

when substr(a.pspt_id,18,1)='1' then '0'

when substr(a.pspt_id,18,1)='0' then '1'

when substr(a.pspt_id,18,1) in ('X','x') then '2'

when substr(a.pspt_id,18,1)='9' then '3'

when substr(a.pspt_id,18,1)='8' then '4'

when substr(a.pspt_id,18,1)='7' then '5'

when substr(a.pspt_id,18,1)='6' then '6'

when substr(a.pspt_id,18,1)='5' then '7'

when substr(a.pspt_id,18,1)='4' then '8'

when substr(a.pspt_id,18,1)='3' then '9'

when substr(a.pspt_id,18,1)='2' then '10'

end

)

then '身份证验证错误'

/*判断身份证号码的区域编码是否符合规则*/

when b.county_sar_code is null then '区县编码校验错误'

else '有效实名制客户'

end

/*用户信息表,包含所需要查询的身份证号码信息*/

from usr_info a

/*身份证的行政区域编码表,从统计局官网和网上可以下载,设定county_sar_code为6位行政编码*/

left join csounty_sar b

on substr(a.pspt_id,1,6)=b.county_sar_code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习记录

python学习记录schedule库schedule库 import schedule import time #引入schedule和timedef job():print("Working in progress...") #定义一个叫job的函数&#xff0c;函数的功能是打印Im working...#部署情况 schedule.every(10).minutes.do(job) #部署每10…

Python | 在属性的帮助下实现setter和getter

In this program, we are implementing Properties. Python offers a better way to implement setters and getter with the help of properties by using attribute property. By default properties are getters so we have to declare setter part explicitly. 在此程序中&…

windows进入mysql

cd \wamp\bin\mysql\mysql5.6.17\bin\mysql -hlocalhost -uroot -p转载于:https://blog.51cto.com/8818968/1835449

python爬取js动态网页_Python 爬取网页中JavaScript动态添加的内容(一)

当我们进行网页爬虫时&#xff0c;我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息。但是如果网页中含有 JavaScript 代码&#xff0c;我们必须经过渲染处理才能获得原始数据。此时&#xff0c;如果我们仍采用常规方法从中抓取数据&#xff0c;那么我们将一无所获。…

mac mysql 忘记密码 卸载_MySQL忘记密码后重置密码(Mac )

转&#xff1a;http://www.cnblogs.com/lihuanqing/p/5623872.html安装好MySQL以后&#xff0c;系统给了个默认的的密码&#xff0c;然后不小心关了&#xff0c;惨了密码没有了。1、关闭mysql服务器 sudo /usr/local/mysql/support-files/mysql.server stop 也可以在系统偏好里…

MATLAB学习——变量、数组

变量、数组变量赋值显示格式数组一维数组生成数组元素提取提取单个元素抽取二维数组生成数组提取提取单个元素提取子矩阵添加字符数组空数组变量 赋值 赋值语句一般形式&#xff1a;变量 数、字符或表达式 a 1 #自定义为双精度double x x y 1*2*3显示格式 可以…

Nginx严格访问代理HTTP资源

为什么80%的码农都做不了架构师&#xff1f;>>> 1 严格访问 访问能基于客户端的IP地址允许或拒绝或使用基于HTTP验证。 为了允许或拒绝从某个地址及或所有地址的访问&#xff0c;使用allow和deny指令&#xff1a; location / { deny 192.168.1.2; allow 192.168…

Java LinkedList公共布尔boolean offerLast(Object o)方法(带示例)

LinkedList公共布尔布尔offerLast(Object o)方法 (LinkedList public boolean offerLast(Object o) method) This method is available in package java.util.LinkedList.offerLast(Object o). 软件包java.util.LinkedList.offerLast(Object o)中提供了此方法。 This method is…

csv 字符串_Python实现json转csv格式

利用Python实现json格式转换为csv文件格式前言本文是学校的课程设计&#xff0c;这里我没有用封装好的json库来实现&#xff0c;而是把读进来的文件当一个字符串来处理&#xff0c;核心函数其实是python的eval()类型转换函数。什么是 JSON?我们要考虑到json格式下key-value对的…

MATLAB学习——常用语句

MATLAB学习——常用语句if语句if endif elseif elseifswitch语句for语句while语句if语句 if end n input(n); if rem(n,2) 0A even endif else n input(n); #输入空数组判断为odd if rem(n,2) 0A even elseA odd endif elseif n input(n); if rem(n,2) 0;even els…

mysql 线性表_数据结构之线性表

概要参考《大话数据结构》&#xff0c;把常用的基本数据结构梳理一下。线性表定义线性表(List)&#xff1a;零个或多个数据元素的有限序列。若将线性表记为 \((a_1, \cdots, a_{i-1}, a_i, a_{i1}, \cdots, a_n)\)&#xff0c;则表中 \(a_{i-1}\) 领先于 \(a_i\)&#xff0c;\(…

使用JavaScript修改浏览器URL地址栏的实现代码

现在的浏览器里,有一个十分有趣的功能&#xff0c;你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来&#xff0c;当你在浏览器点击后退按钮的时候&#xff0c;你可以冲浏览历史上获得回退的信息&#xff0c;这听起来并不复杂&#xff0c;是可以…

ruby array_在Ruby中使用Array.pop和Array.shift方法从Array中删除元素

ruby arrayRuby Array.pop和Array.shift方法 (Ruby Array.pop and Array.shift methods) If you are reading an article that is related to deleting elements from the instance of Array class then it is expected from you that you are aware of the basic things relat…

python语言百分号的含义_python中百分号意思的是什么

python中百分号意思的是什么 发布时间&#xff1a;2020-07-09 16:38:13 来源&#xff1a;亿速云 阅读&#xff1a;158 python中百分号意思的是什么&#xff1f;很多新手对此不是很清楚&#xff0c;为了帮助大家解决这个难题&#xff0c;下面小编将为大家详细讲解&#xff0c;有…

MATLAB学习——矩阵

矩阵矩阵运算算术运算基本算术运算点运算关系运算逻辑运算元素处理取整取模和取余矩阵分析与处理矩阵行列式、秩与迹、特征值分析矩阵的逆与线性方程组求解矩阵的分解与变换矩阵运算 算术运算 基本算术运算 #检查矩阵阶数[n,m] size(A),l length(A) A [1 2;3 4] B [1 1;…

sqldeveloper mysql迁移_通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤

通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤发布时间&#xff1a;2020-06-08 15:52:18来源&#xff1a;51CTO阅读&#xff1a;210作者&#xff1a;三月本篇文章给大家主要讲的是关于通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤的内容&#xff0c…

未能成功加载扩展程序_【JAVA虚拟机(JVM)精髓】09-几种不同的类加载器

持续更新JVM相关知识&#xff0c;敬请关注&#xff1a;Java虚拟机精髓专栏​zhuanlan.zhihu.com上一节说了下类加载器和类加载过程。这一节我们看下几种不同的类加载器。JVM支持的类加载器有两类&#xff0c;分别是引导类加载器和自定义加载器。这里的自定义自定义加载器&#…

Oracle .事物,提交,回滚

事物&#xff08;transaction&#xff09; -->作为单个逻辑工作单元执行的一系列操作&#xff08;要么全部成功要么全部失败&#xff09; 提交&#xff08;commit&#xff09; -->系列操作全部成功的场合才会执行 回滚&#xff08;rollback&#xff09; -->系列操作其…

perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次

perl 哈希数组的哈希Prerequisite: Hashing data structure 先决条件&#xff1a; 哈希数据结构 Problem statement: 问题陈述&#xff1a; Find the first element occurring K times in the array. 查找数组中出现K次的第一个元素。 Example: 例&#xff1a; Input array…

图片md5修改工具_如何修改视频和图片的MD5,用电脑自带的命令

首先说下&#xff0c;md5到底是啥&#xff0c;它是一段固定长度的数据。无论原始数据是多长或多短&#xff0c;其MD5值都是128bit。另外md5是确定性&#xff0c;一个原始数据的MD5值是唯一的&#xff0c;同一个原始数据不可能会计算出多个不同的MD5值&#xff1b;类似人类的身份…