使用Presto SQL实现身份证号部分脱敏
Posted 光于前裕于后
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Presto SQL实现身份证号部分脱敏相关的知识,希望对你有一定的参考价值。
众所周知,新的身份证号是18位,可以从中获取到地址、生日、性别等信息。
第1-2位数字:所在省份的代码。
第3-4位数字:所在城市的代码。
第5-6位数字:所在区县的代码。
第7-14位数字:出生年、月、日。
第15-17位数字:同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中,第十七位奇数分给男性,偶数分给女性。
第18位数字:校验码。校验码数字分别用0-1十个阿拉伯数字或 ×代表。这个校验码是通过法定方式计算得出的。计算结果为10的时候,用希腊数字×代表。
例子:
-- substring(string, start, length) → varchar
select if(length(card_id)=18, concat(substring(card_id, 1, 4), '**', substring(card_id, 7, 8), '**', substring(card_id, 17, 1), '*'), card_id) from tab;
结果:
1101**19000101**1* |
---|
此身份证号为人造,脱敏后可获取到省市信息1101,出生年月日19000101,性别1男 |
以上是关于使用Presto SQL实现身份证号部分脱敏的主要内容,如果未能解决你的问题,请参考以下文章