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

ตัวดำเนินการ REGEXP ใน MySQL และการจับคู่รูปแบบ

ตัวดำเนินการ 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 |
+-------+