如何在 MySQL 中屏蔽数据字段


how to mask data fields in mysql?

我有一个包含特殊数据的表,我需要在备份这些数据后隐藏这些数据例如,我有一个包含以下电话号码的文件

0020158578939

我需要让它变成这样

002015*******

我必须使用它的 sql 命令是什么。我在这里搜索但没有找到合适的答案提前谢谢你

假设列名是phone,这个SQL语句可以:

SELECT CONCAT(SUBSTR(phone, 1, 6), REPEAT('*', CHAR_LENGTH(phone) - 6)) AS masked_phone
FROM `yourTable`

这将仅显示前 6 个字符,并用 * 掩盖其余字符。

更新(根据您的评论):

备份时,您可以生成以下 UPDATE 语句来屏蔽电话号码:

UPDATE `yourTable`
SET phone = CONCAT(SUBSTR(phone, 1, 6), REPEAT('*', CHAR_LENGTH(phone) - 6))

如果您再次需要此电话号码,请使用:

   base64_encode("0020158578939");

当你需要它时,那么

   base64_decode("您的手机的 mysql 字段值");

否则使用 :

   MD5("0020158578939");sha1('0020158578939');

如果字段是字符串,则可以使用它来生成模糊字符串:

SELECT RPAD(SUBSTR(PhoneNumber, 1, 6), Length(PhoneNumber), '*')

请参阅此链接 RPAD 函数的具体工作原理:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rpad