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

ค้นหาข้อความที่มีตัวขึ้นบรรทัดใหม่ (Newline) ใน MySQL ด้วย REGEXP

การค้นหาสตริงที่มีอักขระ Newline (\n) ด้วย REGEXP

ฟังก์ชัน REGEXP ใน MySQL รองรับ Regular Expression สามารถใช้ค้นหาอักขระควบคุม เช่น Newline (\n) ได้โดยตรง

สร้างตารางและเพิ่มข้อมูล (มี \n ในสตริง)

mysql> CREATE TABLE DemoTable (Name VARCHAR(100));
Query OK, 0 rows affected (1.61 sec)

mysql> INSERT INTO DemoTable VALUES('John\nSmith');
mysql> INSERT INTO DemoTable VALUES('John Doe');
mysql> INSERT INTO DemoTable VALUES('David\nMiller');
mysql> INSERT INTO DemoTable VALUES('Carol Taylor');

แสดงข้อมูลทั้งหมด (MySQL แสดง \n เป็นช่องว่างในตาราง)

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+--------------+
| Name         |
+--------------+
| John Smith   |
| John Doe     |
| David Miller |
| Carol Taylor |
+--------------+
4 rows in set (0.00 sec)

คำสั่งค้นหาแถวที่มี Newline (\n)

mysql> SELECT * FROM DemoTable WHERE Name REGEXP '\n';

ผลลัพธ์:

+--------------+
| Name         |
+--------------+
| John Smith   |
| David Miller |
+--------------+
2 rows in set (0.41 sec)

คำอธิบาย

  • REGEXP '\n' : ค้นหาตัวอักษร Newline (ASCII 10) ในสตริง
  • ใน MySQL สตริง Literal 'John\nSmith' จะเก็บ Newline จริง ไม่ใช่ตัวอักษร \ และ n
  • REGEXP รองรับ Escape sequences เช่น \n, \t, \r
  • วิธีนี้ใช้ได้กับ TEXT, VARCHAR, CHAR
  • หากต้องการค้นหาตัวอักษร \ และ n จริง ให้ใช้ REGEXP '\\\\n' (Double escape)