Tạo bảng mật khẩu
mysql> CREATE TABLE DemoTable1410 (Password VARCHAR(80));
INSERT INTO DemoTable1410 VALUES
('John12345678'),('Carol_897'),('David_5647383');
Dữ liệu gốc
mysql> SELECT * FROM DemoTable1410;
+---------------+
| Password |
+---------------+
| John12345678 |
| Carol_897 |
| David_5647383 |
+---------------+
UPDATE: Giữ 5 ký tự đầu, thay thế phần còn lại bằng #
mysql> UPDATE DemoTable1410
-> SET Password = CONCAT(SUBSTR(Password, 1, 5), REPEAT('#', CHAR_LENGTH(Password) - 5));
Query OK, 3 rows affected (0.16 sec)
Kết quả đã mask
mysql> SELECT * FROM DemoTable1410;
+---------------+
| Password |
+---------------+
| John1####### |
| Carol#### |
| David######## |
+---------------+
Giải thích: SUBSTR(Password,1,5) lấy 5 ký tự đầu. CHAR_LENGTH(Password)-5 tính số ký tự còn lại. REPEAT('#', n) tạo chuỗi n dấu #. CONCAT nối lại. Cảnh báo: Đây là cập nhật dữ liệu gốc (mất dữ liệu thật). Nên dùng VIEW hoặc SELECT với masking để hiển thị, giữ nguyên dữ liệu gốc.