PostgreSQL生成隨機身份證ID
標籤
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
相關文章
- PostgreSQL 生成隨機數字、字串、日期、驗證碼以及 UUIDSQL隨機字串UI
- 隨機生成四個驗證碼隨機
- 應用:隨機生成驗證碼隨機
- python生成隨機圖形驗證碼Python隨機
- 隨機生成六位數驗證碼隨機
- Python PIL模組隨機生成中文驗證碼Python隨機
- linux 生成隨機密碼,uuidLinux隨機密碼UI
- 生成隨機排列隨機
- 生成隨機數隨機
- Python隨機生成驗證碼的兩種方法Python隨機
- python生成隨機數、隨機字串Python隨機字串
- Solidity陷阱:以太坊的隨機數生成Solid隨機
- javascript隨機生成字串,可以用來生成隨機密碼JavaScript隨機字串密碼
- struts2生成隨機驗證碼圖片隨機
- JavaScript 生成隨機數JavaScript隨機
- mysql生成隨機數MySql隨機
- PostgreSQL版的身份證號碼15位轉18位SQL
- postgresql隨機啟動設定SQL隨機
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- Linux Shell 生成隨機數和隨機字串Linux隨機字串
- 短視訊開發,生成隨機的驗證碼數字隨機
- 隨機驗證碼隨機
- 快速高效 | Android身份證識別Android
- 隨機數生成器隨機
- JS生成隨機密碼JS隨機密碼
- java隨機數生成原理Java隨機
- 生成隨機字串並排序隨機字串排序
- 隨機字串生成與排序隨機字串排序
- canvas隨機生成星星(轉)Canvas隨機
- 生成隨機整數方法隨機
- python 隨機數生成Python隨機
- C++生成隨機數C++隨機
- 隨筆-openssl證書的生成和使用
- Java之生成一個隨機驗證碼(數字+大小寫字母)Java隨機
- javascript實現的生成驗證碼隨機數程式碼例項JavaScript隨機
- ULID 與 UUID:用於 JavaScript 的可排序隨機 ID 生成器UIJavaScript排序隨機
- javascript 驗證身份證JavaScript
- 微信小程式生成隨機數微信小程式隨機