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

วิธิลบช่องว่างทั้งหมดออกจากคอลัมน์ใน MySQL

การกำจัดช่องว่างทั้งหมดด้วย 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+) หรือทำหลายรอบ