הפונקציה MySQL REGEXP_REPLACE() משמשת להתאמת דפוסים. הפונקציה הזו מחפש במחרוזת תבנית ביטוי רגולרית ומחליף כל מופע של התבנית עם המחרוזת שצוינה התואמת את דפוס הביטוי הרגולרי הנתון. אם נמצא ההתאמה, הוא מחזיר את כל המחרוזת יחד עם ההחלפות. אם לא נמצאה התאמה, המחרוזת המוחזרת תישאר ללא שינוי. אם הביטוי, התבניות והמחרוזת ההחלפה הם NULL, הפונקציה תחזיר NULL.
REGEXP_REPLACE(), REPLACE(), ו ה-TRANSLATE() לתפקד ב MySQL הם פועלים כמוהו, פרט לכך שה-TRANSLATE מאפשר לנו לבצע החלפות מרובות של תווים בודדים והפונקציה REPLACE מחליפה מחרוזת שלמה אחת במחרוזת אחרת, בעוד REGEXP_REPLACE מחפש במחרוזת תבנית ביטוי רגיל.
תחביר
להלן תחביר בסיסי לשימוש בפונקציה זו ב-MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
הסבר פרמטר
ההסבר של פרמטרי הפונקציה REGEXP_REPLACE() הם:
ביטוי: זוהי מחרוזת קלט שעליה נבצע חיפוש באמצעות פרמטרים ופונקציות של ביטויים רגולריים.
מעצב מחרוזת
דפוסים: הוא מייצג את תבנית הביטוי הרגולרי עבור מחרוזת משנה.
replace_string: זוהי מחרוזת משנה שתוחלף אם ההתאמה תימצא.
הפונקציה REGEXP_INSTR() משתמשת בפרמטרים אופציונליים שונים המפורטים להלן:
מיקום: הוא משמש כדי לציין את המיקום בביטוי בתוך המחרוזת כדי להתחיל את החיפוש. אם לא נציין פרמטר זה, הוא יתחיל בעמדה 1.
הִתרַחֲשׁוּת: הוא משמש כדי לציין עבור איזו מופע של התאמה אנחנו הולכים לחפש. אם לא נציין פרמטר זה, כל המופעים יוחלפו.
התאמה_סוג: זוהי מחרוזת המאפשרת לנו לחדד את הביטוי הרגולרי. הוא משתמש בתווים האפשריים הבאים כדי לבצע התאמה.
גבול באמצעות css
הבה נבין זאת בעזרת דוגמאות שונות.
דוגמא
ההצהרה הבאה מסבירה את הדוגמה הבסיסית של הפונקציה REGEXP_REPLACE ב-MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
הנה הפלט:
נניח שמחרוזת הקלט שלנו מכילה התאמות מרובות בתוך המחרוזת , אז פונקציה זו תחליף את כולם. ראה את ההצהרות שלהלן:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
הנה הפלט:
דפוס מפה
אם למחרוזת הקלט ולמחרוזת הניתנת להחלפה אין התאמה, ההצהרות מחזירות את המחרוזת המקורית. ראה את הדוגמה שלהלן:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
הנה הפלט:
אם נרצה להחליף את המחרוזת ב מפרט את העמדה כדי להתחיל בהחלפה, נוכל להשתמש בפונקציה REGEX_REPLACE באופן הבא:
javascript לתפריט נפתח
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
בהצהרה זו, ציינו את המיקום כ-2 כדי להתחיל את ההחלפה. ביצוע שאילתה זו, נקבל את הפלט שלהלן שבו נוכל לראות שהמיקום הראשון של המחרוזת הניתנת להחלפה אינו מוחלף.
אנו יודעים שכל המופעים של המחרוזת התואמת מוחלפים כברירת מחדל. עם זאת, יש לנו גם אפשרות לציין את המופע הספציפי להחלפת המחרוזת התואמת באמצעות ה- הִתרַחֲשׁוּת פָּרָמֶטֶר. ראה את הדוגמה שלהלן:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
בדוגמה זו, מיקום ההתחלה של המחרוזת הניתנת להחלפה הוא 2 שהגיע לאחר תחילת ההתרחשות הראשונה. לכן, מופע 2 הפך למופע 1, והתרחשות 3 הפכה למופע 2. ראה את הפלט שלהלן:
אנו יכולים לספק פרמטר נוסף כדי לחדד את הביטוי הרגולרי באמצעות הארגומנטים של סוג ההתאמה. לדוגמה , נוכל להשתמש בו כדי לוודא אם ההתאמה היא תלוית רישיות או לכלול מסימי קו. ראה את הדוגמה שלהלן שבה אנו מציינים את א תלוי רישיות ו התאמה לא תלוית רישיות:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive';
הנה הפלט: