代码之家  ›  专栏  ›  技术社区  ›  user4494497

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

  •  5
  • user4494497  · 技术社区  · 11 年前

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

    0020158578939

    我需要这样做

    002015*******

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

    3 回复  |  直到 11 年前
        1
  •  7
  •   haim770    11 年前

    假设列名为 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))
    
        2
  •  2
  •   Bulbul Mahmud Nito    11 年前

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

        base64_encode('0020158578939');
    
    

    当你需要的时候

        base64_decode('your mysql field value of phone');
    
    

    否则使用:

        md5('0020158578939'); sha1('0020158578939');
    
    
        3
  •  2
  •   Sjoerd    11 年前

    如果字段是字符串,则可以使用此选项生成隐藏字符串:

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

    请参阅此链接RPAD功能的具体工作方式: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rpad