ไดเรกทอรีบทความ
ฐานข้อมูล 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 ของบล็อกของ Chen Weiliang เพื่อรับข่าวสารล่าสุด!
📚 คู่มือนี้มีคุณค่ามหาศาล 🌟 นี่เป็นโอกาสที่หายาก อย่าพลาด! ⏰⌛💨
แชร์และชอบถ้าคุณชอบ!
การแบ่งปันและไลค์ของคุณเป็นแรงจูงใจอย่างต่อเนื่องของเรา!