使用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实现身份证号部分脱敏的主要内容,如果未能解决你的问题,请参考以下文章

使用Presto SQL实现身份证号部分脱敏

脱敏工具类。手机号银行卡号身份证号关键信息脱敏

脱敏工具类。手机号银行卡号身份证号关键信息脱敏

js身份证号电话脱敏处理(用*替换中间数据)

一个注解(优雅)搞定SpringBoot项目中的身份证号手机号等敏感数据脱敏

一个注解(优雅)搞定SpringBoot项目中的身份证号手机号等敏感数据脱敏