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

ลบ Whitespace นำหน้าและท้ายใน MySQL ด้วย TRIM()

ใช้ฟังก์ชัน 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))