MySQL 查询手机号时隐藏中间 4 位

本文介绍了一种在数据库查询中保护用户手机号隐私的方法,通过使用concat_ws函数结合substring,实现对手机号部分数字的替换,有效避免了隐私泄露。适用于当用户未设置昵称,需要展示用户名(即手机号)的情况。

转载自:https://blog.youkuaiyun.com/maxsky/article/details/78656965?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  很多时候我们会根据昵称显示某某用户,但如果用户未设置昵称时就需要用用户名代替,但用户名又是手机号的时候,隐私问题就来了,所以下面是一个简单的方法在查询时自动 Get 到隐藏后的手机号。 

很简单,对需要屏蔽的字段用 concat_ws 处理一下就 OK 啦。中间用 JOIN 啥的并不影响哈。

SELECT
    # 查询其他数据
    u.id,
    u.user_name,
    # 查询手机号
    concat_ws(
        # 星号代替,需要屏蔽几位就输入几个字符,这儿是 4 位星号
        '****',
        # user_name = 手机号字段。取第 1 位开始一共 3 个字符(手机号前 3 位
        substring(u.user_name, 1, 3),
        # 取第 8 位开始一共 4 个字符(手机号后 4 位
        substring(u.user_name, 8, 4)
    ) AS 'mobile' # 取一个别名
FROM
    users AS u

 

PS:这个是小功能,但是百度上给的substring方法放到MySQL里头各种报错。。。。感谢上面的原博主,说的太清楚啦~亲测完全木有问题~转载过来做个笔记~ 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值