เมื่อต้องการลบช่องว่าง (spaces) เฉพาะที่ นำหน้า (leading) และ ต่อท้าย (trailing) ของข้อมูล ใช้ฟังก์ชัน TRIM() ซึ่งต่างจาก REPLACE() ที่ลบทุกตำแหน่ง
รูปแบบคำสั่ง
UPDATE table_name
SET column_name = TRIM(column_name);
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูลที่มีช่องว่างขอบ
CREATE TABLE removeSpaceDemo (
Id INT NOT NULL AUTO_INCREMENT,
UserId VARCHAR(20),
UserName VARCHAR(10),
PRIMARY KEY (Id)
);
INSERT INTO removeSpaceDemo (UserId, UserName) VALUES
('John1267 ', 'John'),
(' 12Larry56', 'Larry'),
(' David909', 'David'),
('Bob912 ', 'Bob'),
(' Sam123 ', 'Sam');
ข้อมูลก่อนลบ (มีช่องว่างนำหน้า/ต่อท้าย):
+----+----------------+----------+
| Id | UserId | UserName |
+----+----------------+----------+
| 1 | John1267 | John |
| 2 | 12Larry56 | Larry |
| 3 | David909 | David |
| 4 | Bob912 | Bob |
| 5 | Sam123 | Sam |
+----+----------------+----------+
2. ใช้ TRIM() ลบช่องว่างขอบ
UPDATE removeSpaceDemo
SET UserId = TRIM(UserId);
ผลลัพธ์: Query OK, 5 rows affected
3. ตรวจสอบข้อมูลหลัง TRIM
SELECT * FROM removeSpaceDemo;
+----+-----------+----------+
| Id | UserId | UserName |
+----+-----------+----------+
| 1 | John1267 | John |
| 2 | 12Larry56 | Larry |
| 3 | David909 | David |
| 4 | Bob912 | Bob |
| 5 | Sam123 | Sam |
+----+-----------+----------+
ฟังก์ชัน TRIM แบบละเอียด
| คำสั่ง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|
TRIM(str) | ลบ leading + trailing | ค่าเริ่มต้น |
TRIM(LEADING FROM str) | ลบ leading เท่านั้น | เหมือน LTRIM() |
TRIM(TRAILING FROM str) | ลบ trailing เท่านั้น | เหมือน RTRIM() |
TRIM(BOTH 'x' FROM str) | ลบ 'x' นำหน้าและต่อท้าย | ระบุตัวอักษรที่ต้องการลบ |
ตัวอย่าง TRIM แบบระบุตัวอักษร
SELECT TRIM(BOTH 'x' FROM 'xxxHelloxxx'); -- 'Hello'
SELECT TRIM(LEADING '0' FROM '000123'); -- '123'
SELECT TRIM(TRAILING '.' FROM 'file..'); -- 'file'
RTRIM() - ทางเลือกเก่า
UPDATE table_name SET column_name = RTRIM(column_name);
RTRIM() ลบเฉพาะ trailing spaces เท่านั้น (เหมือน TRIM(TRAILING FROM ...)) ใช้ได้ใน MySQL ทุกเวอร์ชัน
สรุปการเลือกใช้
- ลบช่องว่าง ทั้งนำหน้าและต่อท้าย →
TRIM() - ลบช่องว่าง เฉพาะนำหน้า →
LTRIM()หรือTRIM(LEADING FROM ...) - ลบช่องว่าง เฉพาะต่อท้าย →
RTRIM()หรือTRIM(TRAILING FROM ...) - ลบช่องว่าง ทุกตำแหน่ง (รวมระหว่างคำ) →
REPLACE(col, ' ', '')