ใช้ฟังก์ชัน TRIM(), REPLACE(), หรือ REGEXP_REPLACE() (MySQL 8.0+) เพื่อลบ Newline Characters
ตัวอย่างข้อมูลที่มี Newline
INSERT INTO tblDemotrail VALUES
(1, 'John '), -- Trailing space
(2, ' Carol'), -- Leading space
(3, ' Sam '), -- Both sides
(4, 'Tom\n '), -- Newline + space
(5, '\nTim '); -- Leading newline + space
วิธีที่ 1: TRIM() - ลบ Leading/Trailing Whitespace (รวม Newline)
-- ลบทั้ง Leading และ Trailing
UPDATE tblDemotrail SET name = TRIM(name);
-- ลบเฉพาะ Trailing Newline
UPDATE tblDemotrail SET name = TRIM(TRAILING '\n' FROM name);
-- ลบเฉพาะ Leading Newline
UPDATE tblDemotrail SET name = TRIM(LEADING '\n' FROM name);
วิธีที่ 2: REPLACE() - ลบ Newline ทุกตำแหน่ง
-- ลบ \n (LF - Unix)
UPDATE tblDemotrail SET name = REPLACE(name, '\n', '');
-- ลบ \r (CR - Windows/Mac Old)
UPDATE tblDemotrail SET name = REPLACE(name, '\r', '');
-- ลบทั้ง \r และ \n (CRLF - Windows)
UPDATE tblDemotrail SET name = REPLACE(REPLACE(name, '\r', ''), '\n', '');
วิธีที่ 3: REGEXP_REPLACE() - MySQL 8.0+ (ทรงพลังที่สุด)
-- ลบ Whitespace ทุกชนิด (Space, Tab, Newline, Carriage Return)
UPDATE tblDemotrail SET name = REGEXP_REPLACE(name, '[[:space:]]+', ' ');
-- ลบเฉพาะ Newline (\n, \r)
UPDATE tblDemotrail SET name = REGEXP_REPLACE(name, '[\r\n]+', '');
วิธีที่ 4: ตอน Select (ไม่เปลี่ยนข้อมูลจริง)
SELECT TRIM(REPLACE(REPLACE(name, '\r', ''), '\n', '')) AS clean_name
FROM tblDemotrail;
ตัวอย่างผลลัพธ์
-- ก่อน
+------+------------------+
| id | name |
+------+------------------+
| 4 | Tom |
| | |
| 5 | |
| | Tim |
+------+------------------+
-- หลัง UPDATE ... SET name = TRIM(REPLACE(REPLACE(name, '\r', ''), '\n', ''))
+------+------+
| id | name |
+------+------+
| 1 | John |
| 2 | Carol|
| 3 | Sam |
| 4 | Tom |
| 5 | Tim |
+------+------+
แนะนำ
- One-time Cleanup: ใช้
REPLACE(REPLACE(name, '\r', ''), '\n', '') - ป้องกันตอน Insert: ใช้
TRIM()หรือ Application Layer Clean - MySQL 8.0+: ใช้
REGEXP_REPLACE()สะดวกและทรงพลังกว่า