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

ลบช่องว่างระหว่างคำใน MySQL ด้วย REPLACE()

ใช้ 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;