นิพจน์ทั่วไปของฐานข้อมูล MySQL ตรงกันอย่างไร MySQL regexp ชอบการใช้งาน

ฐานข้อมูล MySQLนิพจน์ทั่วไปตรงกันอย่างไรMySQL regexp เช่นการใช้งาน

นิพจน์ทั่วไปของ MySQL

ในบทที่แล้ว เราได้เห็นแล้วว่า MySQL สามารถ ชอบ...% สำหรับการจับคู่ที่คลุมเครือ

MySQL ยังรองรับการจับคู่นิพจน์ทั่วไปอื่นๆ ด้วย ตัวดำเนินการ REGEXP ใช้ใน MySQL สำหรับการจับคู่นิพจน์ทั่วไป

หากคุณรู้จัก PHP หรือ Perl ก็ค่อนข้างตรงไปตรงมา เนื่องจากการจับคู่นิพจน์ทั่วไปของ MySQL นั้นคล้ายคลึงกับสคริปต์เหล่านี้

รูปแบบปกติในตารางต่อไปนี้สามารถใช้กับตัวดำเนินการ REGEXP

โหมดลักษณะ
^ตรงกับจุดเริ่มต้นของสตริงอินพุต^ ยังตรงกับตำแหน่งหลัง '\n' หรือ '\r' หากมีการตั้งค่าคุณสมบัติ Multiline ของวัตถุ RegExp
$จับคู่ส่วนท้ายของสตริงอินพุตหากมีการตั้งค่าคุณสมบัติ Multiline ของวัตถุ RegExp $ จะตรงกับตำแหน่งก่อนหน้า '\n' หรือ '\r' ด้วย
.จับคู่อักขระเดี่ยวใดๆ ยกเว้น "\n"หากต้องการจับคู่อักขระใดๆ รวมถึง '\n' ให้ใช้รูปแบบเช่น '[.\n]'
[... ]คอลเลกชันของตัวละครจับคู่อักขระที่มีอยู่ตัวใดตัวหนึ่งตัวอย่างเช่น '[abc]' จะตรงกับ "plai'a' ใน n".
-ชุดอักขระเชิงลบจับคู่อักขระใด ๆ ที่ไม่มีอยู่ตัวอย่างเช่น '[^abc]' จะตรงกับ 'p' ใน "ธรรมดา"
p1|p2|p3จับคู่ p1 หรือ p2 หรือ p3ตัวอย่างเช่น 'z|food' จะจับคู่กับ "z" หรือ "food" '(z|f)ood' ตรงกับ "zood" หรือ "food"
*จับคู่นิพจน์ย่อยก่อนหน้าเป็นศูนย์หรือมากกว่าตัวอย่างเช่น zo* จะจับคู่กับ "z" เช่นเดียวกับ "zoo" * เทียบเท่ากับ {0,}
+จับคู่นิพจน์ย่อยก่อนหน้าอย่างน้อยหนึ่งครั้งตัวอย่างเช่น 'zo+' จะจับคู่กับ "zo" และ "zoo" แต่ไม่ตรงกับ "z" + เทียบเท่ากับ {1,}
{NS}n เป็นจำนวนเต็มที่ไม่เป็นลบตรงกันทั้งหมด n ครั้งตัวอย่างเช่น 'o{2}' จะไม่ตรงกับ 'o' ใน "Bob" แต่จะตรงกับ o ทั้งสองใน "food"
{น,ม}ทั้ง m และ n เป็นจำนวนเต็มที่ไม่ติดลบ โดยที่ n <= mตรงกันอย่างน้อย n ครั้งและมากที่สุด m ครั้ง

ตัวอย่าง

หลังจากที่เข้าใจข้อกำหนดทั่วไปข้างต้นแล้ว เราก็สามารถเขียนคำสั่ง SQL ด้วยนิพจน์ทั่วไปตามข้อกำหนดของเราเองได้ด้านล่างเราจะแสดงตัวอย่างเล็ก ๆ น้อย ๆ (ชื่อตาราง: person_tbl ) เพื่อทำความเข้าใจให้ลึกซึ้งยิ่งขึ้น:

ค้นหาข้อมูลทั้งหมดที่ขึ้นต้นด้วย 'st' ในฟิลด์ชื่อ:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

ค้นหาข้อมูลทั้งหมดที่ลงท้ายด้วย 'ตกลง' ในฟิลด์ชื่อ:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

ค้นหาข้อมูลทั้งหมดที่มีสตริง 'mar' ในฟิลด์ชื่อ:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

ค้นหาข้อมูลทั้งหมดในฟิลด์ชื่อที่ขึ้นต้นด้วยสระหรือลงท้ายด้วยสตริง 'ok':

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ ) แชร์ "จะจับคู่นิพจน์ทั่วไปของฐานข้อมูล MySQL ได้อย่างไร? MySQL regexp เช่นการใช้งาน" จะช่วยคุณได้

ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-492.html

หากต้องการปลดล็อคเคล็ดลับที่ซ่อนอยู่เพิ่มเติม ยินดีต้อนรับเข้าร่วมช่อง Telegram ของเรา!

แชร์และกดไลค์ถ้าคุณชอบ! การแชร์และการถูกใจของคุณคือแรงบันดาลใจอย่างต่อเนื่องของเรา!

 

发表评论

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ 必填项已用 * 标注

เลื่อนไปที่ด้านบน