צבירת JSON ומחרוזות
SQL Server 2025 מציג פונקציות צבירה חדשות לבניית מערכי JSON, אובייקטי JSON ומחרוזות מופרדות. תוספות אלו מקלות על יצירת פלט מובנה כגון תגובות API, דוחות או ייצוא יומן ישירות משאילתות T-SQL. הפונקציות החדשות מאפשרות לך להעביר עיצוב נתונים לשכבת מסד הנתונים, ובכך להפחית את הצורך בהמרה מורכבת מצד הלקוח.
מבט כולל על פונקציות צבירת JSON ומחרוזות
בוא נבחן את שלוש פונקציות הצבירה החדשות:
JSON_ARRAYAGG
יצירת מערך JSON מערכי ביטוי. הערך של כל שורה הופך לרכיב במערך ה- JSON שנוצר. זה מפשט את יצירת מערכי הערכים כגון רשימות של מזהים או שמות.
JSON_OBJECTAGG
יוצר אובייקט JSON מזוגות מפתח-ערך. הארגומנט הראשון מגדיר את המפתח, והשני מגדיר את הערך. צימוד ערכים זה מקל על בניית מסמכי JSON ישירות מתוצאות השאילתה.
STRING_CONCAT_WS
שרשור מחרוזות עם מפריד שצוין תוך דילוג על ערכי NULL. שם הפונקציה מייצג מחרוזת CONCAT עם מפריד. הוא מספק דרך יעילה לצרף ערכים כגון שמות, תגים או רשימות המופרדות בפסיקים.
אופרטור שרשור מחרוזות ||
SQL Server 2025 מציג את האופרטור בתקן || ANSI כחלופה לשרשור + מחרוזות. הוא מספק תחביר נייד יותר ולעתים קרובות מועדף בעת שילוב עמודות מרובות לפלט טקסט יחיד.
הפונקציה UNISTR
UNISTR() החזרת מחרוזת Unicode המבוססת על רצפי escape, המאפשרת לך להוסיף תווים לפי נקודת קוד או סימון escape. אפשרות זו שימושית בעת כתיבת סקריפטים הכוללים תווים שאינם ניתנים להדפסה או תווים רב-לשוניים.
דוגמה 1: בניית מערכי JSON ואובייקטים מתוצאות שאילתה
תאר לעצמך שמסד הנתונים שלך מאחסן נתוני הזמנות של לקוחות בשתי טבלאות, Sales.Customer ו Sales.SalesOrderHeader- . צוות הניתוח זקוק לדוח JSON המסכם כל לקוח ומזהי ההזמנות שלו לצורך אינטגרציה עם לוח מחוונים אינטרנטי.
שאילתה: שימוש ב- JSON_ARRAYAGG וב- JSON_OBJECTAGG
השאילתה הבאה מאחזרת כל לקוח יחד עם מערך JSON של מזהי ההזמנות שלו, עטופים באובייקט JSON.
SELECT
C.CustomerID,
C.FirstName + ' ' + C.LastName AS CustomerName,
JSON_OBJECTAGG(
'Customer' : C.CustomerID,
'Orders' : JSON_ARRAYAGG(SOH.SalesOrderID)
) AS CustomerSummary
FROM Sales.Customer AS C
JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
GROUP BY C.CustomerID, C.FirstName, C.LastName;
Results
| מזהה לקוח | שם לקוח | סיכום לקוח |
|---|---|---|
| 11001 | ג'ורדן פטרסון | {"לקוח":11001,"הזמנות":[43722,43723,43724]} |
| 11002 | אליסיה טראן | {"לקוח":11002,"הזמנות":[43725,43726]} |
| 11003 | מרקו דיאז | {"לקוח":11003,"הזמנות":[43727]} |
בדוגמה זו, JSON_ARRAYAGG אוסף את כל מזהי ההזמנה של כל לקוח למערך JSON, ועוטף JSON_OBJECTAGG את התוצאה באובייקט JSON עם זוגות מפתח-ערך ברורים. המבנה כולו מיוצר בשאילתת T-SQL אחת.
דוגמה 2: עיצוב פלט טקסט באמצעות STRING_CONCAT_WS
צוות השיווק זקוק לרשימה של שמות המוצרים שנרכשו על ידי כל לקוח מופרדים בפסיקים עבור קמפיין דואר אלקטרוני. הפונקציה STRING_CONCAT_WS יכולה להפיק תוצאות אלה בצורה נקייה, תוך השמטת ערכי NULL.
שאילתה: צירוף שמות מוצרים באמצעות מפריד
השאילתה הבאה מאחזרת כל לקוח יחד עם רשימה מופרדת בפסיקים של מוצרים שהוא רכש.
SELECT
C.CustomerID,
C.FirstName + ' ' + C.LastName AS CustomerName,
STRING_CONCAT_WS(', ',
P.Name
) AS ProductsPurchased
FROM Sales.Customer AS C
JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
JOIN Sales.SalesOrderDetail AS SOD
ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product AS P
ON SOD.ProductID = P.ProductID
GROUP BY C.CustomerID, C.FirstName, C.LastName;
Results
| מזהה לקוח | שם לקוח | מוצריםנרכש |
|---|---|---|
| 11001 | ג'ורדן פטרסון | Touring-2000 Blue, 50, Mountain-100 Black, 44 |
| 11002 | אליסיה טראן | כביש-250 צהוב, 44, הר-200 אדום, 48 |
| 11003 | מרקו דיאז | Touring-3000 כחול, 62 |
כאן, STRING_CONCAT_WS מצרף שמות מוצרים עם פסיקים ומתעלם מערכי NULL באופן אוטומטי, תוך הימנעות ידנית COALESCEאו ISNULL לוגיקה.
דוגמה 3: שילוב JSON וטקסט מופרד לפלט API
אפשר גם להשתמש בפונקציות האלה יחד כדי להכין נתונים מובנים לתגובת API. השאילתה הבאה יוצרת מערך JSON של אובייקטים שבו כל אובייקט מכיל שם לקוח ורשימת מוצרים המופרדת באמצעות פסיקים.
SELECT
JSON_ARRAYAGG(
JSON_OBJECTAGG(
'Customer' : C.FirstName + ' ' + C.LastName,
'Products' : STRING_CONCAT_WS(', ', P.Name)
)
) AS ApiOutput
FROM Sales.Customer AS C
JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
JOIN Sales.SalesOrderDetail AS SOD
ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product AS P
ON SOD.ProductID = P.ProductID
GROUP BY C.CustomerID, C.FirstName, C.LastName;
דוגמה לתוצאה
[
{"Customer":"Jordan Patterson","Products":"Touring-2000 Blue, 50, Mountain-100 Black, 44"},
{"Customer":"Alicia Tran","Products":"Road-250 Yellow, 44, Mountain-200 Red, 48"},
{"Customer":"Marco Diaz","Products":"Touring-3000 Blue, 62"}
]
יישום צורך מבנה זה ישירות או מייצא אותו כמסמך JSON באמצעות כלים כגון SQL Server Management Studio (SSMS) או Azure Data Studio.
תקציר
SQL Server 2025 מוסיף JSON_ARRAYAGG, JSON_OBJECTAGGוכדי STRING_CONCAT_WS לפשט את בניית פלט הטקסט וה- JSON המובנה בתוך T-SQL. פונקציות אלה מאפשרות לך להפיק נתונים מוכנים ליישום משאילתות ללא קוד חיצוני. בין אם אתה מכין מטענים של JSON, בונה דוחות או מעצב תגובות API, תכונות צבירה אלה הופכות את SQL Server 2025 לפלטפורמה רב-תכליתית יותר עבור יישומי נתונים מודרניים.