Latest web development tutorials

MySQL นิพจน์ปกติ

ในส่วนก่อนหน้านี้เราได้เรียนรู้ผ่าน MySQL ต้องการ ... % สำหรับการจับคู่เลือน

MySQL อื่น ๆ นอกจากนี้ยังสนับสนุนการจับคู่แสดงออกปกติ, ผู้ประกอบการ MySQL REGEXP ที่จะใช้การจับคู่แสดงออกปกติ

ถ้าคุณรู้ว่า PHP หรือ Perl แล้วการดำเนินการเป็นเรื่องง่ายมากเพราะ MySQL แสดงออกปกติการจับคู่คล้ายกับสคริปต์เหล่านี้

ในตารางด้านล่างโหมดปกติก็สามารถนำมาใช้ในการประกอบการแต่ง regexp

โหมด ลักษณะ
^ ตรงกับจุดเริ่มต้นของสตริง ถ้าคุณตั้งค่าคุณสมบัติหลายของวัตถุ RegExp ที่ ^ ยังตรงกับ '\ n' ตำแหน่งหรือ '\ r หลัง
$ ตรงปลายใส่ของสตริง ถ้าคุณตั้งค่า Multiline วัตถุ RegExp คุณสมบัติยังจับคู่ $ '\ n' หรือ '\ r ตำแหน่งก่อน
. ตรงกับตัวอักษรตัวเดียวใด ๆ ยกเว้น "\ n" คือ รวมทั้งเพื่อให้ตรงกับ '\ n' รวมทั้งตัวอักษรใด ๆ เช่นการใช้งานของ '[. \ n] โหมด
[ ... ] การตั้งค่าของตัวละคร ตรงกับตัวอักษรใด ๆ รวม ตัวอย่างเช่น '[abc]' ตรงกับ "ธรรมดา" ใน 'a'
[^ ... ] ชุดตัวอักษรเชิงลบ ตรงกับตัวอักษรใด ๆ ที่ไม่ได้รวม ตัวอย่างเช่น '[^ 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$';