קבוצת קונסאט MySQL למחרוזות

Mysql Group Concat Strings



הפונקציה GROUP _CONCAT היא פונקציית צבירה GROUP BY המאפשרת לחבר ערכי עמודה מרוב שורות לשדה יחיד. היא מחזירה מחרוזת אם קבוצת הסט מכילה ערך עמודה אחד או ללא null ומחזירה ערך NULL אם לא ניתן למצוא ערך.

מדריך זה ילמד אותך כיצד להשתמש בפונקציה MySQL GROUP_CONCAT () כדי לשלב מחרוזות מקבוצה עם מספר אפשרויות.







שימוש בסיסי

כפי שהזכרנו, פונקציה זו מחזירה תוצאת מחרוזת עם הערכים של הערכים הלא-אפס המשולבים או NULL אם לא קיימים.



התחביר הכללי הוא:



GROUP_CONCAT ([ מוּבהָק ]expr[,expr ...]
[ מיין לפי expr
[ ASC | DESC ] [,שם שם ...]]
[SEPARATOR str_val])

הֶסבֵּר

מהתחביר לעיל, אתה יכול לראות שהפונקציה GROUP_CONCAT משתמשת בסעיפים ואילוצים של MySQL כדי לציין את האפשרויות השונות:





  1. מוּבהָק: סעיף DISTINCT מסייע להסיר את הערכים הכפולים בקבוצה המוגדרת לפני תהליך החיבור. שקול את ההדרכה שלנו המסבירה את MySQL DISTINCT כדי להבין איך זה עובד.
  2. מיין לפי: הסעיף הבא הוא ORDER BY שעוזר למיין את הערכים בסדר שצוין. הסדר יכול להיות עולה או יורד. אם לא צוין סדר, MySQL מעצב את הערכים בסדר עולה.
  3. מפריד : סעיף זה קובע את המחרוזת מילולית המוחדרת בין ערכי הקבוצה בתהליך החיבור. כברירת מחדל, MySQL משתמש בפסיק (,) להפרדת הערכים.

הערה: תוצאת המחרוזת שנוצרה על ידי הפונקציה MySQL GROUP_CONCAT () מוגבלת לאורך שהערך שנקבע במשתנה group_concat_max_len. ערך זה מוגדר במערכת ויש לו ערך ברירת מחדל של 1024. ניתן לשנות ערך זה באופן גלובלי או להגדיר אותו בפגישה הדרושה לך.

מַעֲרֶכֶת [ גלוֹבָּלִי | מוֹשָׁב ]group_concat_max_len= ערך ;

שקול את ההפניה להלן כדי ללמוד עוד:



https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len

איך זה עובד: דוגמה

הרשה לי להשתמש בדוגמה פשוטה להסבר כיצד פועלת הפונקציה GROUP_CONCAT (). שקול את הטבלה עם שדה עבור CHAR כ:

לִיצוֹר שולחן קונקט ( ערך לְהַשְׁחִיר );

הבה נכניס ערכים לטבלה כפי שמוצג בשאילתה להלן:

לְהַכנִיס לְתוֹך קונקט ( ערך ) ערכים ('H'),('וגם'),('ה'),('ה'),('אוֹ');

אם נבצע פעולה בסיסית GROUP_CONCAT על הערכים בטבלה, נקבל תוצאת מחרוזת כפי שמוצג להלן:

בחר GROUP_CONCAT ( מוּבהָק ערך מיין לפי ערך ASC מפריד'') מ קונקט ;

הערך המתקבל הוא:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( מוּבהָק ערך מיין לפי ערך ASC מפריד'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1שׁוּרָה ב מַעֲרֶכֶת (0.01שניות)

האם אתה רוצה דרך אחרת להבין מה קרה לתוצאה שניתנה למעלה?

אנו מתחילים בהסרת כל הערכים הכפולים בשל פסקת MySQL DISTINCT שמסירה L.

לאחר מכן, אנו ממשיכים לסדר עולה ORDER BY כהגדרתו ב- (ASC), שמשנה את המחרוזת בצורה של

שלום->EHLO

לבסוף, אנו מבצעים את תהליך החיבור באמצעות רווח כמפריד לערכים שנקבעו, וכתוצאה מכך המחרוזת E H L O מ- {H, E, L, L O}.

דוגמאות למקרי שימוש

הבה ניקח מאגר נתונים אמיתי ונשתמש בו כדי להמחיש כיצד נוכל ליישם את הפונקציה GROUP_CONCAT (). בדוגמה זו נשתמש במסד הנתונים של Sakila, ובמיוחד בטבלת הכתובות ממסד הנתונים של Sakila.

שקול את המשאב שלהלן להורדת מסד הנתונים של הדוגמאות שלך:

https://dev.mysql.com/doc/index-other.html

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

בחר GROUP_CONCAT ( מוּבהָק מָחוֹז מיין לפי מחוז נפרד'|') מ sakila.address לְהַגבִּיל 5;

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

הערה: הפונקציה GROUP_CONCAT () היא פונקציה מצטברת. לכן, עליך לציין את המשפט ORDER BY בתוך הפונקציה ולא במשפט SELECT.

סיכום

הפונקציה MySQL GROUP_CONCAT () הנדונה במדריך זה היא פונקציה שימושית המאפשרת לך ליצור נתונים ייחודיים, ממוינים ומאורגנים מטבלה שעלולה להכיל כפילויות ונתונים לא מסודרים.

שקול את המסמכים או את מדריכי MySQL האחרים שלנו למידע נוסף.