การกำจัดช่องว่างทั้งหมดด้วย REPLACE()
ต่างจาก TRIM() ที่ลบช่องว่างเฉพาะหน้าและหลัง ฟังก์ชัน REPLACE() สามารถลบช่องว่าง ทุกตำแหน่ง ภายในสตริงได้ โดยการแทนที่ช่องว่าง (' ') ด้วยสตริงว่าง ('')
ไวยากรณ์ (Syntax)
UPDATE yourTableName
SET yourColumnName = REPLACE(yourColumnName, ' ', '');
ตัวอย่างการใช้งาน
สร้างตารางพร้อม Primary Key:
mysql> CREATE TABLE stripAllSpacesDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(100)
-> );
Query OK, 0 rows affected (0.56 sec)
เพิ่มข้อมูลที่มีช่องว่างกระจายอยู่ในชื่อ:
mysql> INSERT INTO stripAllSpacesDemo(Name) VALUES('Jo h n');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO stripAllSpacesDemo(Name) VALUES(' Joh n');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO stripAllSpacesDemo(Name) VALUES('Jo hn');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO stripAllSpacesDemo(Name) VALUES('J ohn');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO stripAllSpacesDemo(Name) VALUES('John ');
Query OK, 1 row affected (0.14 sec)
ข้อมูลก่อนลบช่องว่าง:
mysql> SELECT * FROM stripAllSpacesDemo;
+----+-----------+
| Id | Name |
+----+-----------+
| 1 | Jo h n |
| 2 | Joh n |
| 3 | Jo hn |
| 4 | J ohn |
| 5 | John |
+----+-----------+
5 rows in set (0.00 sec)
รันคำสั่งลบช่องว่างทั้งหมด:
mysql> UPDATE stripAllSpacesDemo SET Name = REPLACE(Name, ' ', '');
Query OK, 5 rows affected (0.12 sec)
Rows matched: 5 Changed: 5 Warnings: 0
ผลลัพธ์หลังลบช่องว่าง:
mysql> SELECT * FROM stripAllSpacesDemo;
+----+------+
| Id | Name |
+----+------+
| 1 | John |
| 2 | John |
| 3 | John |
| 4 | John |
| 5 | John |
+----+------+
5 rows in set (0.00 sec)
ข้อสังเกต
คำสั่งนี้จะลบ ช่องว่างทั่วไป (space) เท่านั้น ไม่รวมตัวอักขระ whitespace อื่นๆ เช่น Tab (\t), Newline (\n) หากต้องการลบทุกชนิด ควรใช้ REGEXP_REPLACE() (MySQL 8.0+) หรือทำหลายรอบ