У меня есть таблица, содержащая специальные данные, и мне нужно скрыть эти данные после их резервного копирования
например, у меня есть файл с таким номером телефона, как этот
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