ביטויים רגולריים ב-mySQL
ב-MySQL ניתן לבצע שאילתות שמכילים ביטויים רגולריים באמצעות האופרטור REGEXP . אופרטור REGEXP מציע הרבה יותר מאופרטור LIKE , אבל הרבה פחות מהיכולת של PHP לטפל בביטויים רגולריים , והוא בהחלט כלי שחשוב שיהיה בארגז הכלים של כל מפתח.
את המדריך מלווה קובץ SQL, שאותו ניתן להוריד מהקישור:
שאילתות שמתחילות ומסתיימות בתו מסוים
נחפש ביטוי שמתחיל ב-y. שימו לב שב-mySQL אין משמעות לאותיות קטנות או גדולות.
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '^y';
והתוצאה:
Yechezkel, Yirmiyahu, Yoshiahu, Yehuda
כדי לחפש ביטוי שמסתיים ב-yahu:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP 'yahu$';
והתוצאה:
Yirmiyahu
התו המיוחד נקודה .
התו המיוחד (מטה-תגית) . מייצג כל תו שהוא. לכן אם נרצה לחפש ביטוי שמתחיל ב-3 תווים כלשהם שאחריהם shon, נכתוב זאת כך:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '...shon';
והתוצאה:
Gershon
דרך יותר אלגנטית לכתוב חזרות היא באמצעות ציון מספר החזרות בין סוגריים מסולסלים. כך נראית אותה שאילתה באנוטציה שמשתמשת בסוגריים מסולסלים:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '.{3}shon';
והתוצאה:
Gershon
שאילתה נוספת שמשתמשת באנוטציה של סוגריים מסולסלים:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '.{3}sh.{2}';
והתוצאה:
Gershon, Sheshet
בחירה בין אפשרויות
כדי לבחור בין אפשרויות מציבים | בין האפשרויות. לדוגמה, gershon או yirmiyahu ייכתב כך: 'gershon|yirmiyahu'.
השאילתה:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP 'gershon|yirmiyahu';
תחזיר:
Yirmiyahu, Gershon
סט של תווים
כדי לבחור מסט של תווים, מציינים את סט התווים בין סוגריים מרובעים. לדוגמה, כשרוצים להתחיל את השאילתה באחד התווים abcdefgjihk:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '^[abcdefgjihk]';
והתוצאה:
Gershon, Asher, Eliezer, Koresh
אפשר לכתוב את השאילתה בדרך יותר אלגנטית אם מפרידים בין התו הראשון והאחרון בסט בקו מפריד. לדוגמה, השאילתה הבאה:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '^[a-k]';
והתוצאה:
Gershon, Asher, Eliezer, Koresh
וזו שאילתה שבוחרת רק מחרוזות שכוללות אותיות עבריות:
SELECT `workers_name` FROM `workers`
WHERE `workers_name` REGEXP '[א-ת]';
במדריך הבא נלמד על הוספת אינדקס לעמודות בטבלת mysql
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים