MySQL รองรับการดำเนินการจับคู่รูปแบบอื่นตามนิพจน์ทั่วไปและ REGEXP โอเปอเรเตอร์ ต่อไปนี้เป็นตารางรูปแบบ ซึ่งสามารถใช้ร่วมกับ REGEXP โอเปอเรเตอร์เพื่อจัดการการจับคู่รูปแบบ
รูปแบบ | รูปแบบตรงกันอย่างไร |
^ | จุดเริ่มต้นของสตริง |
$ | จุดสิ้นสุดของสตริง |
. | อักขระตัวใดก็ได้ |
[...] | อักขระใดๆ ที่อยู่ระหว่างวงเล็บเหลี่ยม |
[^...] | อักขระใดๆ ที่ไม่อยู่ในวงเล็บเหลี่ยม |
p1|p2|p3 | การสลับ; ตรงกับรูปแบบใด ๆ p1, p2 หรือ p3 |
* | องค์ประกอบก่อนหน้า 0 หรือมากกว่า |
+ | องค์ประกอบก่อนหน้าอย่างน้อยหนึ่งอินสแตนซ์ |
{n} | n อินสแตนซ์ขององค์ประกอบก่อนหน้า |
{m,n} | ม. ถึง n อินสแตนซ์ขององค์ประกอบก่อนหน้า |
ตัวอย่าง
เพื่อแสดงการใช้ REGEXP เรากำลังใช้ตาราง '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 | +------+---------+------------+------------+ 5 rows in set (0.00 sec)
ต่อไปนี้คือข้อความค้นหาที่ใช้ REGEXP เพื่อค้นหารูปแบบของ 'ชื่อ' จากตารางด้านบน -
mysql> Select Name from student_info WHERE Name REGEXP '^Y'; +---------+ | Name | +---------+ | YashPal | +---------+ 1 row in set (0.11 sec)
ข้อความค้นหาด้านบนจะค้นหาชื่อทั้งหมดที่ขึ้นต้นด้วย "Y"
mysql> Select name from student_info WHERE Name REGEXP 'am$'; +-------+ | name | +-------+ | Ram | | Shyam | +-------+ 2 rows in set (0.00 sec)
แบบสอบถามด้านบนจะค้นหาชื่อทั้งหมดที่ลงท้ายด้วย 'am'
mysql> Select name from student_info WHERE Name REGEXP 'av'; +--------+ | name | +--------+ | Gaurav | +--------+ 1 row in set (0.00 sec)
แบบสอบถามด้านบนจะค้นหาชื่อทั้งหมดที่มี 'av'
mysql> Select name from student_info WHERE Name REGEXP '^[aeiou]|am$'; +-------+ | name | +-------+ | Ram | | Shyam | +-------+ 2 rows in set (0.00 sec)
ข้อความค้นหาด้านบนจะค้นหาชื่อทั้งหมดที่ขึ้นต้นด้วยสระและลงท้ายด้วย "am"