Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ซ่อนอีเมลใน MySQL เปลี่ยนโดเมนด้วย REPLACE

เมื่อต้องการปกป้องข้อมูลอีเมล (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 ซับซ้อนกว่า