PostgreSQL 生成随机身份证ID

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

标签

PostgreSQL , 身份证号生成


背景

生成随机身份证号。

规则

前1、2位数字表示:所在省(直辖市、自治区)的代码;

第3、4位数字表示:所在地级市(自治州)的代码;

第5、6位数字表示:所在区(县、自治县、县级市)的代码;

第7 - 14位数字表示:出生年、月、日;

第15、16位数字表示:所在地的派出所的代码;

第17位数字表示性别:奇数表示男性,偶数表示女性;

第18位数字是校检码:也有的说是个人信息码,不是随计算机的随机产生,它是用来检验身份证的正确性。校检码可以是0—9的数字,有时也用x表示。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

方法

从简,只是用于测试。

create or replace function gen_id(  
  a date,  
  b date  
)   
returns text as $$  
select lpad((random()*99)::int::text, 2, '0') ||   
       lpad((random()*99)::int::text, 2, '0') ||   
       lpad((random()*99)::int::text, 2, '0') ||   
       to_char(a + (random()*(b-a))::int, 'yyyymmdd') ||   
       lpad((random()*99)::int::text, 2, '0') ||   
       random()::int ||   
       (case when random()*10 >9 then 'X' else (random()*9)::int::text end ) ;  
$$ language sql strict;  
  
  
postgres=# select gen_id('1900-01-01', '2017-10-16');  
       gen_id         
--------------------  
 808866195306076311  
(1 row)  

参考

https://jingyan.baidu.com/article/72ee561abd962fe16038df48.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
27天前
|
缓存 关系型数据库 MySQL
为啥MySQL官方不推荐使用uuid或者雪花id作为主键
为啥MySQL官方不推荐使用uuid或者雪花id作为主键
22 1
|
4月前
|
设计模式 算法 Java
浩鲸科技:为什么要用雪花ID替代数据库自增ID?
浩鲸科技:为什么要用雪花ID替代数据库自增ID?
41 1
|
5月前
|
关系型数据库 PostgreSQL
postgreSQL获取随机数ID
postgreSQL获取随机数ID
|
9月前
|
SQL 关系型数据库 MySQL
【MySQL】如何快速检索邮箱号以及身份证?
【MySQL】如何快速检索邮箱号以及身份证?
213 0
|
9月前
|
关系型数据库 PostgreSQL
PostgreSQL表用户列最大个数
PostgreSQL表用户列最大个数
104 0
|
11月前
|
Oracle 关系型数据库 Unix
postgresql参数的分类和修改
postgresql参数配置是在$PGDATA下的postgresql.conf文件中,有时候也会在postgresql.auto.conf文件中,后者优先级更高。
241 0
|
存储 SQL 缓存
mysql系列:全网最全索引类型汇总
mysql系列:全网最全索引类型汇总
185 0
mysql系列:全网最全索引类型汇总
|
关系型数据库 MySQL 数据库
【黄啊码】MySQL入门—5、数据库小技巧:单个列group by就会,多个列呢?
【黄啊码】MySQL入门—5、数据库小技巧:单个列group by就会,多个列呢?
93 0
【黄啊码】MySQL入门—5、数据库小技巧:单个列group by就会,多个列呢?
|
关系型数据库 MySQL
mysql随机查询若干条数据的方法
mysql随机查询若干条数据的方法
235 1
mysql随机查询若干条数据的方法
|
存储 关系型数据库 MySQL
每日一面 - mysql中,innodb表里,某一条数据删除了之后,这条数据会被真实的擦掉码?(下)
每日一面 - mysql中,innodb表里,某一条数据删除了之后,这条数据会被真实的擦掉码?(下)
每日一面 - mysql中,innodb表里,某一条数据删除了之后,这条数据会被真实的擦掉码?(下)

相关产品

  • 云原生数据库 PolarDB