在好几个需求堆积下,瞬间感觉压力好大.这一周,可以用几个字来形容:累、烦,但是很开心,因为可以进步……
正在焦头烂额中的我,要求提取业务数据,其中姓名、手机号要脱敏处理:如:李连杰,脱敏为:李**,18823456789,脱敏为:188****6789平时不太爱专研的我,对于脱敏范了愁,上网一顿搜,查询,最终还是解决了,在这里跟大家分享一下。
1、姓名脱敏:
三个字,脱敏后两位,二个字,脱敏后一位(汉字一个字符长度是3)
case length( trim( name ) )
when 12 then concat( left( name , 2 ) , "**" )
when 9 then concat( left( name , 1 ) , "**" )
else concat( left( name , 1 ) , "*" )
end 姓名
2、手机号脱敏:
2.1 方法一
concat( left( phone , 3 ) , "****" ,right (phone ,4 ) )
2.2 方法二
insert( phone , 4 , 4 , "****" )
3、union(联合查询)
合并两个sql语句查询到的数据,select 的字段个数、对应的位置上类型应保持一致,这种合并是去重的,跟distinct效果一致。
4、union all
合并两个sql语句查询到的数据,select 的字段个数、对应的位置上类型应保持一致,这种合并不去重。
5、不同的order_id 相关的数据,都存在一个表中,提取不同的order_id最新的一条记录
select * from ( select * from orders where `status` = "1" order by gmt_created desc ) group by order_id;