MariaDB - นิพจน์ทั่วไป
นอกเหนือจากการจับคู่รูปแบบที่พร้อมใช้งานจากประโยค LIKE MariaDB ยังเสนอการจับคู่ตามนิพจน์ทั่วไปผ่านตัวดำเนินการ REGEXP ตัวดำเนินการดำเนินการจับคู่รูปแบบสำหรับนิพจน์สตริงตามรูปแบบที่กำหนด
MariaDB 10.0.5 เปิดตัว PCRE Regular Expressions ซึ่งเพิ่มขอบเขตของการจับคู่ในพื้นที่ต่างๆเช่นรูปแบบการเรียกซ้ำการยืนยันล่วงหน้าและอื่น ๆ อีกมากมาย
ตรวจสอบการใช้ไวยากรณ์ตัวดำเนินการ REGEXP มาตรฐานที่ระบุด้านล่าง -
SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';
REGEXP ส่งคืน 1 สำหรับการจับคู่รูปแบบหรือ 0 หากไม่มีรูปแบบ
ตัวเลือกสำหรับสิ่งที่ตรงกันข้ามมีอยู่ในรูปแบบของ NOT REGEXP MariaDB ยังมีคำพ้องความหมายสำหรับ REGEXP และ NOT REGEXP, RLIKE และ NOT RLIKE ซึ่งสร้างขึ้นด้วยเหตุผลด้านความเข้ากันได้
รูปแบบการเปรียบเทียบอาจเป็นสตริงตามตัวอักษรหรืออย่างอื่นเช่นคอลัมน์ตาราง ในสตริงจะใช้ไวยากรณ์ C Escape ดังนั้นให้เพิ่มอักขระ“ \” ให้เป็นสองเท่า REGEXP ยังไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ยกเว้นสตริงไบนารี
ตารางรูปแบบที่เป็นไปได้ซึ่งสามารถใช้ได้มีดังต่อไปนี้ -
ซีเนียร์ No | รูปแบบและคำอธิบาย |
---|---|
1 |
^ ตรงกับจุดเริ่มต้นของสตริง |
2 |
$ ตรงกับจุดสิ้นสุดของสตริง |
3 |
. มันตรงกับอักขระเดียว |
4 |
[...] ตรงกับอักขระใด ๆ ในวงเล็บ |
5 |
[^...] ตรงกับอักขระใด ๆ ที่ไม่อยู่ในวงเล็บ |
6 |
p1|p2|p3 ตรงกับรูปแบบใด ๆ |
7 |
* ตรงกับ 0 หรือมากกว่าอินสแตนซ์ขององค์ประกอบก่อนหน้า |
8 |
+ ตรงกับ 1 หรือมากกว่าอินสแตนซ์ขององค์ประกอบก่อนหน้า |
9 |
{n} ตรงกับ n อินสแตนซ์ขององค์ประกอบก่อนหน้า |
10 |
{m,n} มันจับคู่ m ถึง n อินสแตนซ์ขององค์ประกอบก่อนหน้า |
ตรวจสอบตัวอย่างการจับคู่รูปแบบที่ระบุด้านล่าง -
ผลิตภัณฑ์ที่ขึ้นต้นด้วย "pr" -
SELECT name FROM product_tbl WHERE name REGEXP '^pr';
ผลิตภัณฑ์ที่ลงท้ายด้วย“ na” -
SELECT name FROM product_tbl WHERE name REGEXP 'na$';
ผลิตภัณฑ์ที่ขึ้นต้นด้วยสระ -
SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';