התאמת דפוסים וחילוץ טקסט
SQL Server 2025 מוסיף פונקציות חדשות של ביטוי רגולרי (REGEXP) ומשפר את הפונקציה כדי לפשט את SUBSTRING העבודה עם טקסט מובנה. תוספות אלו מאפשרות למפתחים לבצע חיפושי טקסט גמישים, לחלץ דפוסים מורכבים ולנקות או להמיר נתונים ישירות ב-T-SQL מבלי להסתמך על סקריפטים בצד הלקוח או פונקציות CLR.
סקירה כללית של פונקציות התאמת דפוסים וחילוץ טקסט
משפחת הפונקציות החדשה של REGEXP תומכת בהערכת ביטויים רגולריים ישירות בתוך SQL Server. כל פונקציה מאפשרת פעולות טקסט ספציפיות מבוססות תבנית.
REGEXP_LIKE
בדיקה אם מחרוזת תואמת לתבנית ביטוי רגילה. החזרת 1 אם הוא תואם, 0 אחרת.
REGEXP_SUBSTR
מחלץ את מחרוזת המשנה הראשונה התואמת לתבנית ביטוי רגילה. שימושי לשליפת מידע ספציפי כגון מספרי טלפון, תאריכים או כתובות דוא"ל.
REGEXP_REPLACE
מחפש דוגמת מילוי במחרוזת ומחליף את כל המופעים התואמים לדוגמת המילוי. ניתן להשתמש בו לניקוי ועיצוב נתונים.
REGEXP_INSTR
החזרת מיקום ההתחלה של מחרוזת המשנה הראשונה התואמת לתבנית בתוך הטקסט הנתון. אידיאלי לאיתור סמני מפתח בטקסט מובנה.
REGEXP_COUNT
ספירת מספר ההתאמות של תבנית ביטוי רגולרי במחרוזת נתונה. ספירה זו שימושית כשצריך למדוד תדירות של תבניות, כגון ספירת ספרות, מילים או סמלים בטקסט.
REGEXP_MATCHES
החזרת כל מחרוזות המשנה התואמות לתבנית ביטוי רגילה כתוצאת טבלה. השתמש בו כאשר אתה זקוק ללכידות מרובות ממחרוזת אחת ולא רק מההתאמה הראשונה.
REGEXP_SPLIT_TO_TABLE
פיצול מחרוזת לשורות מרובות באמצעות מפריד ביטוי רגולרי.
שיפור מחרוזת משנה
הפונקציה SUBSTRING תומכת כעת בפרמטר אורך אופציונלי. כאשר הוא מושמט, הוא מחלץ אוטומטית ממיקום ההתחלה שצוין לסוף המחרוזת, ומפחית את הצורך בחישובי LEN () ידניים.
יחד, יכולות אלה מאפשרות לך לחפש, לחלץ ולטפל בתבניות טקסט ישירות ב- SQL Server 2025 באמצעות T-SQL תמציתי וקריא.
תרחיש לדוגמה: חילוץ וניקוי של נתוני אנשי קשר
צוות שיווק מתחזק מסד נתונים של הודעות לקוחות בעמודה בשם MessageText. ערכים רבים כוללים מספרי טלפון בתבניות שונות. עליך לחלץ את מספר הטלפון הראשון מכל הודעה, לנרמל אותו לתבנית רגילה ולזהות הודעות המכילות מספרי טלפון לא חוקיים.
נתונים לדוגמה
נניח שיש לך את הנתונים לדוגמה הבאים בטבלה שנקראת CustomerMessages:
| מזהה הודעה | טקסט הודעה |
|---|---|
| 1 | "התקשר אליי בטלפון (713) 555-1298 או במשרד 555-8811." |
| 2 | "פנה אליי: +1-832-555-7821 תודה!" |
| 3 | "המספר שלי הוא 713-555-9876 שלוחה 33" |
| 4 | "עדיין אין טלפון רשום." |
שאילתה: זיהוי, חילוץ וסטנדרטיזציה
-- Extract the first phone number pattern and format it consistently
SELECT MessageID,
REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') AS RawNumber,
REGEXP_REPLACE(
REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}'),
'\D', ''
) AS DigitsOnly,
CASE
WHEN REGEXP_LIKE(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') = 1 THEN 'Valid'
ELSE 'Missing'
END AS PhoneStatus
FROM dbo.CustomerMessages;
תוצאות
| מזהה הודעה | מספר גולמי | ספרות בלבד | סטטוס טלפוני |
|---|---|---|---|
| 1 | (713) 555-1298 | 7135551298 | חוקי |
| 2 | +1-832-555-7821 | 18325557821 | חוקי |
| 3 | 713-555-9876 | 7135559876 | חוקי |
| 4 | NULL | NULL | חסר |
דוגמה זו משמשת REGEXP_SUBSTR לחילוץ תבנית ההתאמה הראשונה, REGEXP_REPLACE להסרת תווים שאינם מספריים ולאימות REGEXP_LIKE מספרים חוקיים. השאילתה מתקננת מספרי טלפון לפורמט עקבי של ספרות בלבד ישירות ב-T-SQL.
דוגמה 2: פיצול נתונים באמצעות REGEXP_SPLIT_TO_TABLE ו- SUBSTRING
נניח שטבלה אחרת, CustomerFeedback, מאחסנת תגים מופרדים בפסיקים המתארים את תחומי העניין של הלקוחות. אתה רוצה להפריד אותם לשורות בודדות ולחלץ את מילת המפתח הראשונה לאינדקס מהיר.
SELECT FeedbackID,
value AS Tag,
SUBSTRING(value, 1) AS FirstWord
FROM CustomerFeedback
CROSS APPLY REGEXP_SPLIT_TO_TABLE(Tags, '\s*,\s*');
שאילתה זו מפצלת כל מחרוזת המופרדת באמצעות פסיקים לשורות תוך שימוש בהתנהגות החדשה SUBSTRING (מבלי לציין אורך) כדי לחלץ את כל הטקסט הנותר ממיקום ההתחלה.
תוצאות
| מזהה משוב | תגית | מילה ראשונה |
|---|---|---|
| 1 | נסיעות | נסיעות |
| 1 | צילום | צילום |
| 2 | טיולים | טיולים |
| 2 | קמפינג | קמפינג |
סיכום
הפונקציות החדשות של REGEXP והפונקציה SUBSTRING המשופרת ב-SQL Server 2025 מספקות יכולות מקוריות של התאמת תבניות וחילוץ טקסט. תוספות אלו מבטלות את הצורך בעיבוד מחרוזות חיצוניות, מה שמקל על ניקוי, ניתוח וניתוח נתונים טקסטואליים בתוך מנוע מסד הנתונים. בעזרת כלים אלה, מפתחים יכולים לפשט את צינורות ETL, לשפר את איכות הנתונים ולאפשר ניתוח מונחה טקסט מתקדם ישירות ב-T-SQL.