מדריך מאמרים
כיצד לבצע התאמת ביטויים רגולריים במסד נתונים של MySQL ? כיצד להשתמש בביטויים רגולריים ב-MySQL ?
ביטויים רגולריים של MySQL
בפרקים קודמים, למדנו ש-MySQL יכול להשתמש ב- LIKE …% לצורך התאמה עמומה.
MySQL תומך גם בהתאמה של ביטויים רגולריים אחרים. האופרטור REGEXP משמש ב-MySQL להתאמת ביטויים רגולריים.
אם אתה מכיר PHP או Perl, זה די פשוט, שכן התאמת הביטוי הרגיל של MySQL דומה לאלו של הסקריפטים הללו.
ניתן להחיל את התבניות הרגילות בטבלה הבאה על האופרטור REGEXP.
| מצב | תיאור |
|---|---|
| ^ | מתאים לתחילת מחרוזת הקלט.^ תואם גם את המיקום אחרי '\n' או '\r' אם המאפיין Multiline של האובייקט RegExp מוגדר. |
| $ | מתאים לקצה מחרוזת הקלט.אם המאפיין Multiline של האובייקט RegExp מוגדר, $ מתאים גם למיקום לפני '\n' או '\r'. |
| . | מתאים לכל תו בודד מלבד "\n".כדי להתאים כל תו כולל '\n', השתמש בתבנית כמו '[.\n]'. |
| [...] | אוסף דמויות.מתאים לכל אחת מהדמויות הכלולות.לדוגמה, '[abc]' יתאים ל-"plai'א' ב-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,}. |
| {נ} | n הוא מספר שלם לא שלילי.מתאים בדיוק n פעמים.לדוגמה, 'o{2}' לא יתאים ל-'o' ב-"Bob", אבל יתאים לשני ה-o's ב-"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';
מצא את כל הנתונים בשדה השם שמתחיל בתו תנועה או מסתיים במחרוזת 'בסדר':
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
אני מקווה שהמאמר "כיצד להתאים באמצעות ביטויים רגולריים במסד נתונים של MySQL? שימוש בביטוי רגולרי של MySQL כמו" שפורסם בבלוג של צ'ן וייליאנג ( https://www.chenweiliang.com/ ) יהיה לעזר עבורך.
אל תהססו לשתף את הקישור למאמר הזה: https://www.chenweiliang.com/cwl-492.html
