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

MySQL: ลบช่องว่างนำหน้าและต่อท้ายด้วย TRIM

เมื่อต้องการลบช่องว่าง (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, ' ', '')