一切技术都是来源于生活——记一次业务数据提取

在好几个需求堆积下,瞬间感觉压力好大.这一周,可以用几个字来形容:累、烦,但是很开心,因为可以进步……

正在焦头烂额中的我,要求提取业务数据,其中姓名、手机号要脱敏处理:如:李连杰,脱敏为:李**,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;

缘于生活,而归于工作。本人所书,而意于分享。 如有转载,请注明出处! --活出自己范儿
原文地址:https://www.cnblogs.com/Small-sunshine/p/13459972.html