как маскировать поля данных в MySQL?

У меня есть таблица, содержащая специальные данные, и мне нужно скрыть эти данные после их резервного копирования
например, у меня есть файл с таким номером телефона, как этот

0020158578939

Мне нужно сделать так

002015 *******

Что такое команда sql, которую я должен использовать, чтобы сделать это.
Я искал здесь, но не нашел подходящего ответа
заранее спасибо

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

Другие решения

Если вам снова нужен этот номер телефона, используйте:


base64_encode ( '0020158578939');

и когда вам это нужно, то


base64_decode ('значение вашего mysql поля телефона');

В противном случае используйте:


md5 ( '0020158578939'); SHA1 ( '0020158578939');

1

Вы можете использовать это для генерации затемненной строки, если поле является символьной строкой:

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

Посмотрите по этой ссылке, как конкретно работает функция RPAD: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_rpad

1
По вопросам рекламы [email protected]