ตัวดำเนินการ REGEXP ใน MySQL
MySQL รองรับการจับคู่รูปแบบด้วย Regular Expression ผ่านตัวดำเนินการ REGEXP ตารางด้านล่างแสดงรูปแบบที่ใช้ได้:
| รูปแบบ | ความหมาย |
|---|---|
^ | จุดเริ่มต้นของสตริง |
$ | จุดสิ้นสุดของสตริง |
. | ตัวอักษรเดี่ยวใดๆ |
[...] | ตัวอักษรใดๆ ที่อยู่ในวงเล็บ |
[^...] | ตัวอักษรที่ไม่อยู่ในวงเล็บ |
p1|p2|p3 | ทางเลือก: จับคู่ p1 หรือ p2 หรือ p3 |
* | ศูนย์หรือมากกว่าขององค์ประกอบก่อนหน้า |
+ | หนึ่งหรือมากกว่าขององค์ประกอบก่อนหน้า |
{n} | n ครั้งขององค์ประกอบก่อนหน้า |
{m,n} | m ถึง n ครั้งขององค์ประกอบก่อนหน้า |
ตัวอย่างการใช้งาน
ใช้ตาราง Student_info ที่มีข้อมูลดังนี้:
mysql> SELECT * FROM Student_info;
+------+---------+------------+------------+
| id | Name | Address | Subject |
+------+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Chandigarh | Literature |
| 130 | Ram | Jhansi | Computers |
| 132 | Shyam | Chandigarh | Economics |
| 133 | Mohan | Delhi | Computers |
+------+---------+------------+------------+
ค้นหาชื่อขึ้นต้นด้วย 'Y'
mysql> SELECT Name FROM student_info WHERE Name REGEXP '^Y';
+---------+
| Name |
+---------+
| YashPal |
+---------+
ค้นหาชื่อลงท้ายด้วย 'am'
mysql> SELECT Name FROM student_info WHERE Name REGEXP 'am$';
+-------+
| Name |
+-------+
| Ram |
| Shyam |
+-------+
ค้นหาชื่อที่มี 'av'
mysql> SELECT Name FROM student_info WHERE Name REGEXP 'av';
+--------+
| Name |
+--------+
| Gaurav |
+--------+
ค้นหาชื่อขึ้นต้นด้วยสระ และลงท้ายด้วย 'am'
mysql> SELECT Name FROM student_info WHERE Name REGEXP '^[aeiou]|am$';
+-------+
| Name |
+-------+
| Ram |
| Shyam |
+-------+