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

ลบอักขระเฉพาะทั้งหมดออกจากคอลัมน์ใน MySQL

ใช้ REPLACE(column, 'char_to_remove', '') เพื่อลบอักขระที่ต้องการทั้งหมด

ตัวอย่างการใช้งาน

1. สร้างตารางและข้อมูลมี ^ ปน

mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('Adam^^^'), ('^^^^^^^^Carol'), ('Robert^^^^^^');

2. ลบ ^ ทั้งหมด

mysql> UPDATE DemoTable SET FirstName = REPLACE(FirstName, '^', '');

ผลลัพธ์

+-----------+
| FirstName |
+-----------+
| Adam      |
| Carol     |
| Robert    |
+-----------+

ลบหลายอักขระพร้อมกัน (Nested REPLACE)

UPDATE DemoTable 
SET FirstName = REPLACE(REPLACE(REPLACE(FirstName, '^', ''), '#', ''), '@', '');

MySQL 8.0+: ใช้ REGEXP_REPLACE (ต้องมี Plugin หรือ MariaDB)

-- MariaDB / MySQL with plugin
UPDATE DemoTable SET FirstName = REGEXP_REPLACE(FirstName, '[^#@]', '');

ลบอักขระที่ไม่ใช่ตัวอักษร/ตัวเลข (เก็บแค่ Alphanumeric)

-- ใช้ Function วนลูป (MySQL ไม่มี REGEXP_REPLACE built-in)
-- แนะนำทำที่ Application Layer แทน

ข้อควรระวัง

  • REPLACE Case-Sensitive
  • UPDATE ทั้งตารางอาจช้า → ใส่ WHERE กรองเฉพาะแถวที่มีอักขระนั้น
  • สำรองข้อมูลก่อน UPDATE จำนวนมาก