众所周知,身份证是唯一的。

但是有一个人突然问到,我们数据库中的身份证后四位是唯一的吗?能否查询一下数据库?

这个问题,我的第一反应是,当然不唯一了。

非严谨解释

在不进行数据库验证的前提下,我们只是从逻辑上想一下,身份证一共18位,后四位,即生日后的四位数,那么即使再怎么排列,最多也就是 101010*11个组合,肯定是会重复的。

严谨解释

我们再从严谨的逻辑来理解一下

身份证的排列规则:
身份证号码是由18位数字组成
第1、2位数字表示:所在省份的代码
第3、4位数字表示:所在城市的代码
第5、6位数字表示:所在区县的代码
第7-14位数字表示:出生年、月、日(其中7、8、9、10位是年,11、12位是月,13、14位是日)
第15-17位都是同一地址辖区内的,以及同年同月同日出生人的顺序码,同时第17位兼具性别标识功能,男单女双
第18位数字是校检码:可以是0-9的数字,有时也用X表示

所以,在不同的省市区,身份证后四位是可以重复的。

数据库验证

是的,我们是程序员,当理论无法让人接受的时候,我们可以使用数据来说服他人。
这里我的数据库是mongo数据库,所以,我的查询语句如下

db.user.aggregate([{$match: {//请原谅数据库中那些不规范的身份证号card_id: {$exists: true,$nin: ["", null]}}},{$project: {"_id": 1,"name": 1,"card_id": 1,"card_id_info": {$substr: ["$card_id", 14, 4]}}},//请原谅数据库中那些不规范的身份证号{$match: {card_id_info: {$nin: ["", null]}}},{$group: {_id: "$card_id_info",count: {$sum: 1},//增加输出uniqueIds: {"$addToSet": {_id: "$_id",name: "$name",card_id: "$card_id",card_id_info: "$card_id_info"}}}},{//让我们看看重复的多的是哪些$sort: {count:  - 1}}
])

寄语

数据无情但真实

身份证后四位是否唯一相关推荐

  1. Excel自学笔记 第四节 如何实现隐藏身份证后四位

    今日遇到问题 在身份证中实现隐藏身份证后四位,可能1个身份证好解决,可是成百三千个身份证如何提取? 如何简化量化操作? 实现步骤主要用到函数 replace 1.准备好的身份证数据列 2.该列后插入一 ...

  2. sql截取身份证后四位

    '****' || substr(cia.certid, 15, 4) AS "certid",

  3. 录入学员的身份证后控件焦点转移时根据身份证号码获得生日和性别

    自从接触了报名系统,认证系统,才知道身份证号码里面的信息大有乾坤,以18位的身份证来说,前面六位代表了你户籍所在地,第七位到第十四位代表了你的出生年月,第十五位到第十七为代表了你的性别(偶数为女,奇数 ...

  4. php要字符串的后四位,php如何截取字符串后四位

    摘要 腾兴网为您分享:php如何截取字符串后四位,找乐助手,盈益云,我爱我家,手电筒等软件知识,以及51编辑,v380监控,edge浏览器,excel软件,地铁跑酷iphone版,燕大校园网,德军总部 ...

  5. c语言字符加密向后四位_Base64加密?它只是一种编码算法,切勿用来加密

    说起来Base64编码,很多人都把他当做加密算法来使用,殊不知它只是一种编码而已,如果你用它来进行网络通讯加密,很容易被破解哦,切记,它不是加密算法. Base64的由来 为什么叫Base64呢?因为 ...

  6. 2991:2011 求2011^n的后四位。

    2991:2011 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 已知长度最大为200位的正整数n,请求出2011^n的后四位. 输入 第一行为一个正整数k ...

  7. CSV保存身份证后再打开后4位0000的解决办法

    提示:如果csv导出的数据将导入数据库中,无须进行处理,数据库会自动处理.如果为了查看则需要处理. 1.数据库中导出大量数据,包括身份证号码,条数超过10W+. 2.新建CSV空文档,设置单元格格式位 ...

  8. js手机号中间部分隐藏****,显示前三位和后四位

    js手机号中间部分隐藏****,显示前三位和后四位 //slice(n,s)从已有数组中截取选择的元素,不会影响原数组.//n,s是数组元素的下标,n是开始截取元素的下标,S是结束截取元素的下标,可以 ...

  9. mysql查询手机号码后四位,前几位怎么写?

    mysql查询手机号码后四位,前几位怎么写? 查询手机号后四位 同理查询前几位这么写 引申一下查询前几位和后几位写法 随机位置查询的写法,只要出现就打印 也是新手,才疏学浅,大家共同进步,谢谢 查询手 ...

  10. 2011的n次方的后四位

    201 1 n 2011^n 2011n后四位 总时间限制: 1000ms 内存限制: 65536kB 描述 已知长度最大为200位的正整数n,请求出 201 1 n 2011^n 2011n的后四位 ...

最新文章

  1. 含有多个java程序的文件夹导入MyEclipes 出现错误的解决办法
  2. 图像种类的基本概念整理
  3. 史上超全halcon常见3D算子汇总(一)
  4. 跨站的艺术-XSS Fuzzing 的技巧
  5. 爬虫-scrapy框架-起点中文网的爬取
  6. BERT: Bidirectional Encoder Representations from Transformers双向Transformer用于语言模型 NAACL 2018
  7. Android 系统(12)---Zygote进程启动过程
  8. AI 开发者不容错过的 20 个机器学习和数据科学网站
  9. java 数据库编程(一)JDBC连接Sql Server数据库
  10. 微机原理课程设计-接口芯片编程记录
  11. 计算机上分辨率怎么设置在哪里设置方法,Win7分辨率怎么调 Win7屏幕分辨率设置教程...
  12. java pdf中插入图片
  13. JAVA中的二维数组的定义及使用
  14. Qt Quick 4小时入门-安晓辉-专题视频课程
  15. 美食自媒体好不好做?如何做好美食类账号
  16. ssh连接服务器 一段时间不动后 无响应
  17. 暑期JAVA学习(41.1)TCP通信——多发多收消息
  18. mysql: “Warning: Using a password on the command line interface can be insecure.“ 解决方法
  19. 怎么将ppt文件压缩变小一点?
  20. Label组件之图片显示问题

热门文章

  1. JS判断不同的浏览器和版本,提示浏览器版本过低,兼容IE8到IE11
  2. 四款亲试好用的PDF编辑器推荐,看看哪款最适合你
  3. DOM元素节点属性outerHTML和innerHTML
  4. 刷脸信息采集坚持用户授权最小够用的原则
  5. Redis下载部署并加入idea应用(详细笔记)
  6. 分享CFA一级考试干货
  7. Netty学习之读netty权威指南(一)
  8. 微信小程序 图片处理:压缩、上传、审核
  9. 【ARM 】CMSIS
  10. 【常用 JS 插件】jQuery TreeTable 树表格插件