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]';