ใช้ REPLACE() ลบ/แทนที่สตริงย่อยในคอลัมน์
REPLACE(column, 'search_string', 'replace_string') แทนที่ทุกครั้งที่พบ search_string ด้วย replace_string
สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable1506 (Title TEXT);
Query OK, 0 rows affected (0.70 sec)
mysql> INSERT INTO DemoTable1506 VALUES
-> ('This is MySQL'),
-> ('This is Java language'),
-> ('This is MongoDB NoSQL database');
Query OK, 3 rows affected
ข้อมูลก่อนแก้ไข
+--------------------------------+ | Title | +--------------------------------+ | This is MySQL | | This is Java language | | This is MongoDB NoSQL database | +--------------------------------+
คำสั่ง UPDATE: ลบช่องว่างหน้า 'is' (แทนที่ ' is ' -> ' is')
mysql> UPDATE DemoTable1506
-> SET Title = REPLACE(Title, ' is ', ' is');
Query OK, 3 rows affected (0.14 sec)
Rows matched: 3 Changed: 3 Warnings: 0
ข้อมูลหลังแก้ไข
+-------------------------------+ | Title | +-------------------------------+ | This isMySQL | | This isJava language | | This isMongoDB NoSQL database | +-------------------------------+
กรณีศึกษาเพิ่มเติม
1. ลบช่องว่างทั้งหมด (Trim ทุกช่องว่าง)
UPDATE table SET col = REPLACE(col, ' ', '');
2. ลบช่องว่างหน้า/หลัง (Trim)
UPDATE table SET col = TRIM(col);
3. แทนที่หลายรูปแบบ (Nested REPLACE)
UPDATE table SET col = REPLACE(REPLACE(REPLACE(col, ' ', ' '), '\t', ''), '\n', '');
4. ใช้ REGEXP_REPLACE (MySQL 8.0+)
UPDATE table SET col = REGEXP_REPLACE(col, '\\s+', ' '); -- แทน whitespace หลายตัวเป็นช่องว่างเดียว
⚠️ ข้อควรระวัง
REPLACEแทนที่ ทุกครั้ง ที่พบในสตริง- Case-sensitive (ใน Default Collation)
- ไม่มี WHERE clause จะอัปเดตทุกแถวในตาราง
- ควร
SELECT ... REPLACE(...)ทดสอบก่อน UPDATE จริง
ทดสอบก่อน UPDATE (Safe Pattern)
SELECT Title, REPLACE(Title, ' is ', ' is') AS new_title FROM DemoTable1506;