如何屏蔽 mysql 中的数据字段?
how to mask data fields in mysql?
我有一个 table 包含特殊数据,我需要在备份后隐藏这些数据
例如,我有一个包含 phone 数字的文件,例如
0020158578939
我需要做成这样
002015*******
我必须使用什么 sql 命令来执行此操作。
我在这里搜索但没有找到 suitable 答案
提前谢谢你
假设列名是 phone
,这个 SQL 语句将执行:
SELECT CONCAT(SUBSTR(phone, 1, 6), REPEAT('*', CHAR_LENGTH(phone) - 6)) AS masked_phone
FROM `yourTable`
这将只显示前 6 个字符,其余字符将用 *
屏蔽。
更新(根据您的评论):
备份后,您可以生成以下 UPDATE
语句来屏蔽 phone 号码:
UPDATE `yourTable`
SET phone = CONCAT(SUBSTR(phone, 1, 6), REPEAT('*', CHAR_LENGTH(phone) - 6))
如果您再次需要此 phone 号码,请使用 :
base64_encode('0020158578939');
当你需要的时候
base64_decode('your mysql field value of phone');
否则使用:
md5('0020158578939'); sha1('0020158578939');
如果字段是字符串,您可以使用它来生成模糊字符串:
SELECT RPAD(SUBSTR(PhoneNumber, 1, 6), Length(PhoneNumber), '*')
查看此link RPAD 功能的具体工作原理:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rpad
我有一个 table 包含特殊数据,我需要在备份后隐藏这些数据 例如,我有一个包含 phone 数字的文件,例如
0020158578939
我需要做成这样
002015*******
我必须使用什么 sql 命令来执行此操作。 我在这里搜索但没有找到 suitable 答案 提前谢谢你
假设列名是 phone
,这个 SQL 语句将执行:
SELECT CONCAT(SUBSTR(phone, 1, 6), REPEAT('*', CHAR_LENGTH(phone) - 6)) AS masked_phone
FROM `yourTable`
这将只显示前 6 个字符,其余字符将用 *
屏蔽。
更新(根据您的评论):
备份后,您可以生成以下 UPDATE
语句来屏蔽 phone 号码:
UPDATE `yourTable`
SET phone = CONCAT(SUBSTR(phone, 1, 6), REPEAT('*', CHAR_LENGTH(phone) - 6))
如果您再次需要此 phone 号码,请使用 :
base64_encode('0020158578939');
当你需要的时候
base64_decode('your mysql field value of phone');
否则使用:
md5('0020158578939'); sha1('0020158578939');
如果字段是字符串,您可以使用它来生成模糊字符串:
SELECT RPAD(SUBSTR(PhoneNumber, 1, 6), Length(PhoneNumber), '*')
查看此link RPAD 功能的具体工作原理:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rpad