כיצד לפצל מחרוזת על ידי אות מופרדת בשרת SQL?



נסה את הכלי שלנו לביטול בעיות

במאמר זה נדון בכמה דרכים לפצל את ערך המחרוזת שתוחם. ניתן להשיג זאת באמצעות מספר שיטות כולל.



  • השתמש בפונקציה STRING_SPLIT לפיצול המחרוזת
  • צור פונקציה המוגדרת על ידי המשתמש לפי טבלה כדי לפצל את המחרוזת,
  • השתמש ב- XQuery כדי לפצל את ערך המחרוזת ולהפוך מחרוזת שתוחמה ל- XML

קודם כל, עלינו ליצור טבלה ולהכניס לתוכה נתונים שישמשו את כל שלוש השיטות. הטבלה צריכה להכיל שורה אחת עם מזהה שדה ומחרוזת עם תווי תיחום. צור טבלה בשם 'סטודנט' באמצעות הקוד הבא.



צור תלמיד תלמיד (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))

הוסף שמות תלמידים מופרדים בפסיקים בשורה אחת על ידי ביצוע הקוד הבא.



הכנס לתלמיד (שם סטודנט) ערכים ('מונרוי, מונטנז, מרולהאקיס, נגלי, אלברייט, גארופולו, פריירה, ג'ונסון, וגנר, קונרד')

יצירת טבלה והכנסת נתונים

ודא אם הנתונים הוכנסו לטבלה או שלא משתמשים בקוד הבא.

בחר * מהתלמיד

ודא אם הנתונים הוכנסו לטבלת 'התלמיד'



שיטה 1: השתמש בפונקציה STRING_SPLIT כדי לפצל את המחרוזת

ב- SQL Server 2016, 'STRING_SPLIT' הוצגה פונקציה בה ניתן להשתמש עם רמת תאימות 130 ומעלה. אם אתה משתמש בגרסת SQL Server 2016 ומעלה, אתה יכול להשתמש בפונקציית הבנייה הזו.

יתר על כן 'STRING_SPLIT' מכניס מחרוזת שתוחמת מחרוזות משנה ומכניס תו אחד שישמש כמפריד או כמפריד. הפונקציה מוציאה טבלה של עמודות בודדות ששורותיה מכילות את מחרוזות המשנה. שם עמודת הפלט הוא ' ערך' . פונקציה זו מקבלת שני פרמטרים. הפרמטר הראשון הוא מחרוזת והשני הוא תו מפריד או מפריד על בסיסו עלינו לפצל את המחרוזת. הפלט מכיל טבלה של עמודות בודדות בה קיימים מיתרים. עמודת פלט זו נקראת 'ערך' כפי שניתן לראות באיור למטה. יתר על כן, ה 'SPLIT STRING' הפונקציה table_valued מחזירה טבלה ריקה אם מחרוזת הקלט היא NULL.

רמת תאימות של מסד הנתונים:

כל אחדמאגר מידעהואמְחוּבָּרעםלתְאִימוּתרָמָה.זהמאפשרהמסד נתוניםהתנהגותללִהיוֹתתוֹאֵםעם ההואמיוחדSQLשרתגִרְסָהזהרץעַל.

כעת נקרא לפונקציה 'string_split' לפיצול מחרוזת המופרדת על ידי פסיקים. אך רמת התאימות הייתה פחות מ -130 ומכאן שהועלתה שגיאה בעקבות. 'שם אובייקט לא חוקי 'SPLIT_STRING''

שגיאה נוצרת אם רמת התאימות של מסד הנתונים נמוכה מ -130 'שם אובייקט לא חוקי split_string'

לפיכך עלינו להגדיר את רמת תאימות מסד הנתונים ל -130 ומעלה. אז נבצע את הצעדים הבאים כדי להגדיר את רמת התאימות של מסד הנתונים.

  • ראשית כל הגדר את מסד הנתונים ל- “single_user_access_mode” באמצעות הקוד הבא.
הגדר את הגדרת הנתונים SINGLE_USER
  • שנית, שנה את רמת התאימות של מסד הנתונים באמצעות הקוד הבא.
הגדר בסיס נתונים לשנות COMPATIBILITY_LEVEL = 130
  • החזירו את מסד הנתונים למצב גישה מרובה משתמשים באמצעות הקוד הבא.
הגדר את הגדרת הנתונים MULTI_USER
USE [master] GO ALTER DATABASE [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 DATABASE ALTER [bridge_centrality] SET MULTI_USER GO

התפוקה תהיה:

שנה את רמת התאימות ל -130

כעת הפעל קוד זה כדי לקבל את התוצאה הנדרשת.

דחה @string_value VARCHAR (MAX); SET @ string_value = 'מונרוי, מונטנז, מרולאהאקיס, נגלי, אלברייט, גארופולו, פריירה, ג'ונסון, וגנר, קונרד' בחר * מ STRING_SPLIT (@string_value,