פונקציות מצטברות מחרוזת SQL

Pwnqzywt Mztbrwt Mhrwzt Sql



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

דוגמה כוללת פונקציות כמו SUM(), AVG(), COUNT(), MAX ו-MIN(). עם זאת, דבר אחד שתבחין בפונקציות מצטברות ב- SQL הוא שהן מכוונות לפעולות מספריות.

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







הערה: חשוב לציין שרוב הפונקציות הנדונות בפוסט זה אינן חלק מה-SQL הסטנדרטי. כתוצאה מכך, הם מהווים הרחבה של מנועי מסד נתונים שונים כמו PostgreSQL, SQL Server וכו'.



מהן פונקציות מצטברות מחרוזות?

פונקציות צבירה של מחרוזות הן קבוצה של פונקציות שמבצעות את פעולות הצבירה על קבוצה של מחרוזות בתוך קבוצה או שורות ומחזירות תוצאה בודדת.



אנו משתמשים בעיקר בפונקציות הללו עם הסעיף GROUP BY כדי לקבץ את השורות על סמך עמודה מסוימת ואז לצבור את המחרוזות בכל קבוצה.





כמה פונקציות נפוצות לצבירה של מחרוזות כוללות:

  • GROUP_CONCAT() - PostgreSQL ו-MySQL
  • STRING_AGG - שרת SQL
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – אורקל

תן לנו לחקור כל פונקציה ומה היא מספקת.



GROUP_CONCAT()

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

נניח שיש לנו טבלת 'עובדים' כדלקמן:

CREATE TABLE עובדים (
עובד_מזהה INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
מחלקת VARCHAR(50)
);

INSERT INTO עובדים (שם_שם, שם_משפחה, מחלקה) VALUES
('אליס', 'סמית', 'משאבי אנוש'),
('בוב', 'ג'ונסון', 'שיווק'),
('צ'רלי', 'וילסון', 'פיננסים'),
('דיוויד', 'חום', 'מכירות'),
('אווה', 'דייוויס', 'הנדסה');

תְפוּקָה:

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

בחר
מַחלָקָה,
GROUP_CONCAT(first_name, ' ', last_name) AS full_name
מ
עובדים
GROUP BY
מַחלָקָה;

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

זה מכיל רשימה של עובדים בכל מחלקה.

STRING_AGG

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

שימוש לדוגמה הוא כדלקמן:

בחר
מַחלָקָה,
STRING_AGG(first_name, last_name, ' ') AS full_name
מ
עובדים
GROUP BY
מַחלָקָה;

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

ARRAY_AGG

הפונקציה ARRAY_AGG זמינה רק במסד הנתונים PostgreSQL. זה מאפשר לנו לצבור את הערכים למערך אחד.

דוגמה היא כדלקמן:

בחר
מַחלָקָה,
ARRAY_AGG(first_name) AS working_list
מ
עובדים
GROUP BY
מַחלָקָה;

זה אמור לצבור את שם העובד כמערך.

LISTAGG()

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

דוגמה היא כדלקמן:

SELECT department, LISTAGG(first_name, last_name,  ' ') WITHIN GROUP (ORDER BY werknemer_name ASC) AS workings
מעובדים
GROUP BY מחלקה;

זה משרשר את שמות העובדים והמפריד שצוין.

סיכום

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