如何在mysql中屏蔽数据字段?

时间:2015-03-10 08:45:13

标签: php mysql mask

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

0020158578939

我需要像这样做

002015 *******

什么是我必须用来执行此操作的sql命令。 我在这里搜索但没有找到合适的答案 提前谢谢你

3 个答案:

答案 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