การค้นหาสตริงที่มีอักขระ 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)