บทช่วยสอน MySQL นิพจน์ปกติ ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ MySQL นิพจน์ปกติ
ในส่วนก่อนหน้านี้เราได้เรียนรู้ผ่าน MySQL ต้องการ th. % สำหรับการจับคู่เลือน
MySQL อื่น ๆ นอกจากนี้ยังสนับสนุนการจับคู่แสดงออกปกติ, ผู้ประกอบการ MySQL REGEXP ที่จะใช้การจับคู่แสดงออกปกติ
ถ้าคุณรู้ว่า PHP หรือ Perl แล้วการดำเนินการเป็นเรื่องง่ายมากเพราะ MySQL แสดงออกปกติการจับคู่คล้ายกับสคริปต์เหล่านี้
ในตารางด้านล่างโหมดปกติก็สามารถนำมาใช้ในการประกอบการแต่ง regexp
โหมด | ลักษณะ |
---|---|
^ | ตรงกับจุดเริ่มต้นของสตริง ถ้าคุณตั้งค่าคุณสมบัติหลายของวัตถุ RegExp ที่ ^ ยังตรงกับ '\ n' ตำแหน่งหรือ '\ r หลัง |
$ | ตรงปลายใส่ของสตริง ถ้าคุณตั้งค่า Multiline วัตถุ RegExp คุณสมบัติยังจับคู่ $ '\ n' หรือ '\ r ตำแหน่งก่อน |
. | ตรงกับตัวอักษรตัวเดียวใด ๆ ยกเว้น "\ n" คือ รวมทั้งเพื่อให้ตรงกับ '\ n' รวมทั้งตัวอักษรใด ๆ เช่นการใช้งานของ '[. \ n] โหมด |
[ th. ] | การตั้งค่าของตัวละคร ตรงกับตัวอักษรใด ๆ รวม ตัวอย่างเช่น '[abc]' ตรงกับ "ธรรมดา" ใน 'a' |
[^ th. ] | ชุดตัวอักษรเชิงลบ ตรงกับตัวอักษรใด ๆ ที่ไม่ได้รวม ตัวอย่างเช่น '[^ abc]' ตรงกับ "ธรรมดา" ใน 'p' |
P1 | P2 | P3 | Match P1, P2, P3 หรือ ตัวอย่างเช่น 'Z | อาหาร' สามารถจับคู่ "Z" หรือ "อาหาร" '(Z | F) อู๊ด' จะตรงกับ "zood" หรือ "อาหาร" |
* * * * | แมตช์ก่อนหน้า subexpression ศูนย์หรือมากกว่าครั้ง ยกตัวอย่างเช่น ZO * สามารถจับคู่ "Z" และ "สวนสัตว์" * เทียบเท่า {0} |
+ | แมตช์ก่อนหน้า subexpression หนึ่งครั้งหรือมากกว่า ตัวอย่างเช่น 'ZO +' จะตรงกับ "โซ" และ "สวนสัตว์" แต่ไม่สามารถตรงกับ "Z" + เทียบเท่ากับ {1} |
{N} | n เป็นจำนวนเต็มไม่เป็นลบ การจับคู่ที่กำหนด N ครั้ง ตัวอย่างเช่น 'o {2}' ไม่ตรงกับ "บ๊อบ" ใน 'O' แต่สามารถจับคู่ "อาหาร" ในสอง o |
{n, m} | M และ n เป็นจำนวนเต็มไม่ใช่เชิงลบที่ n <= m การแข่งขันในเวลาที่น้อย n และตรงกับครั้งเมตร |
เมื่อคุณทราบความต้องการมากกว่าปกติเราสามารถเป็นมากขึ้นเพื่อตอบสนองความต้องการของตัวเองที่จะเขียนคำสั่ง 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';
ค้นหาข้อมูลชื่อที่จะเริ่มต้นด้วยการสระและกับ 'ตกลง' จุดสิ้นสุดของสตริงข้อมูลทั้งหมด:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';