Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Che giấu (mask) dữ liệu nhạy cảm trong MySQL bằng CONCAT, SUBSTR, REPEAT

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.