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

วิธีลบ Newline Characters (\n, \r) ออกจากข้อมูลใน MySQL

ใช้ฟังก์ชัน 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() สะดวกและทรงพลังกว่า