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