ใช้ฟังก์ชัน TRIM() เพื่อลบ Whitespace (Space, Tab, Newline) นำหน้า (Leading) และท้าย (Trailing) ของ String
Syntax
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
-- Default: BOTH (ทั้งหน้าและหลัง), remstr = ' ' (Space)
ตัวอย่างพื้นฐาน
SELECT TRIM(' Leading And Trailing spaces ');
-- ผลลัพธ์: 'Leading And Trailing spaces'
SELECT TRIM(LEADING ' ' FROM ' Hello'); -- 'Hello'
SELECT TRIM(TRAILING ' ' FROM 'Hello '); -- 'Hello'
SELECT TRIM(BOTH ' ' FROM ' Hello '); -- 'Hello'
ลบอักขระอื่นๆ (ไม่ใช่ Space)
-- ลบ 'x' นำหน้าและท้าย
SELECT TRIM(BOTH 'x' FROM 'xxxHelloxxx'); -- 'Hello'
-- ลบ Newline
SELECT TRIM(TRAILING '\n' FROM 'Hello\n'); -- 'Hello'
Update ข้อมูลในตาราง
CREATE TABLE TrimDemo2 (name VARCHAR(200));
INSERT INTO TrimDemo2 VALUES (' John ');
-- ก่อน
SELECT * FROM TrimDemo2; -- ' John '
-- Update
UPDATE TrimDemo2 SET name = TRIM(name);
-- หลัง
SELECT * FROM TrimDemo2; -- 'John'
ฟังก์ชันเกี่ยวข้อง
LTRIM(str)- ลบ Leading Space เท่านั้น (TRIM(LEADING ' ' FROM str))RTRIM(str)- ลบ Trailing Space เท่านั้น (TRIM(TRAILING ' ' FROM str))TRIM()- ลบทั้งสองด้าน (Default)
ตัวอย่างครบ: ลบ Whitespace ทุกชนิด
-- ลบ Space, Tab, Newline, Carriage Return ทั้งหน้าและหลัง
UPDATE users
SET name = TRIM(BOTH ' \t\r\n' FROM name); -- ❌ ไม่ได้ (TRIM รองรับ Char เดียว)
-- ใช้ REPLACE + TRIM
UPDATE users
SET name = TRIM(REPLACE(REPLACE(REPLACE(name, '\r', ''), '\n', ''), '\t', ''));
-- MySQL 8.0+: REGEXP_REPLACE
UPDATE users
SET name = TRIM(REGEXP_REPLACE(name, '^[\s]+|[\s]+$', ''));
Best Practice
- ✅ Clean Data ตอน Insert (Application Layer)
- ✅ ใช้
TRIM()ใน SELECT เพื่อแสดงผลสะอาด - ⚠️ UPDATE ทั้งตารางอาจ Lock Table นาน (Batch Update)
- ✅ ใช้
CHECK CONSTRAINT(MySQL 8.0.16+) ป้องกัน Whitespace:CHECK (name = TRIM(name))