เมื่อต้องการปกป้องข้อมูลอีเมล (Data Masking) โดยเปลี่ยนโดเมนให้เหมือนกันทั้งหมด (เช่น @gmail.com → @amz.com) ให้ใช้ฟังก์ชัน REPLACE() ในคำสั่ง UPDATE
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มอีเมล:
mysql> create table DemoTable1345 (UserEmailAddress text);
mysql> insert into DemoTable1345 values('Carol123@gmail.com'),('987Sam@gmail.com'),('David_Miller@gmail.com'),('Bob@gmail.com');
ข้อมูลต้นฉบับ:
+------------------------+ | UserEmailAddress | +------------------------+ | Carol123@gmail.com | | 987Sam@gmail.com | | David_Miller@gmail.com | | Bob@gmail.com | +------------------------+
คำสั่งเปลี่ยนโดเมน @gmail.com เป็น @amz.com
mysql> update DemoTable1345 set UserEmailAddress=replace(UserEmailAddress, '@gmail.com','@amz.com');
ผลลัพธ์หลัง Masking
+----------------------+ | UserEmailAddress | +----------------------+ | Carol123@amz.com | | 987Sam@amz.com | | David_Miller@amz.com | | Bob@amz.com | +----------------------+
คำอธิบายเพิ่มเติม:
REPLACE(str, from_str, to_str)แทนที่ทุกครั้งที่พบfrom_strในstr- หากอีเมลมีโดเมนหลากหลาย ให้รัน UPDATE หลายครั้ง หรือใช้
CASE WHEN - สำหรับ Masking จริง ควรเก็บข้อมูลต้นฉบับไว้ในคอลัมน์แยก หรือใช้ View/Function แทนการ UPDATE จริง
- MySQL 8.0+ มี
REGEXP_REPLACE()สำหรับ Pattern ซับซ้อนกว่า