我有一个包含特殊数据的表,我需要在备份后隐藏这些数据 例如,我有一个包含这样的电话号码的文件
0020158578939
我需要像这样做
002015 *******
什么是我必须用来执行此操作的sql命令。 我在这里搜索但没有找到合适的答案 提前谢谢你
答案 0 :(得分:1)
假设列名为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))
答案 1 :(得分:1)
如果您再次需要此电话号码,请使用:
base64_encode('0020158578939');
当你需要它时
base64_decode('your mysql field value of phone');
否则使用:
md5('0020158578939'); sha1('0020158578939');
答案 2 :(得分:1)
如果字段是字符串,则可以使用它来生成隐藏的字符串:
SELECT RPAD(SUBSTR(PhoneNumber, 1, 6), Length(PhoneNumber), '*')
请参阅此链接RPAD功能如何正常工作:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rpad