کار با دادههای JSON در SQL Server
فرمت JSON یک فرمت سبک و محبوب برای تبادل و ذخیره دادههای بدون ساختار است. از SQL Server 2016 به بعد، قابلیتهای بومی برای پردازش JSON در SQL Server، Azure SQL Database، Azure SQL Managed Instance، Azure Synapse Analytics و SQL Database در Microsoft Fabric وجود دارد. این یعنی ترکیبی از انعطاف NoSQL و قدرت دیتابیسهای رابطهای!
قابلیتهای کلیدی:
- استخراج مقادیر:
۱. قابلیت ISJSON
: بررسی صحت فرمت JSON
۲. قابلیت JSON_VALUE
: استخراج مقادیر اسکالر
۳. قابلیت JSON_QUERY
: استخراج اشیاء یا آرایهها
۴. قابلیت JSON_MODIFY
: ویرایش مقادیر JSON
- تبدیل JSON به ردیفها:
- با OPENJSON
دادههای JSON را به جدول تبدیل کنید.
- نوع داده json:
- در SQL Server 2025 برای ذخیرهسازی و پردازش بهینهتر معرفی شده است.
- فرمتبندی خروجی به JSON:
- با FOR JSON
نتایج کوئری را به فرمت JSON تبدیل کنید.
- ساخت اشیاء و آرایهها:
- توابع JSON_OBJECTAGG
و JSON_ARRAYAGG
برای تولید ساختارهای JSON.
کاربردها:
- سادهسازی مدلهای داده پیچیده
- مدیریت دادههای IoT، لاگها و REST API
- ذخیره JSON در ستونهای NVARCHAR
با امکان ایندکسگذاری
---
تابع JSON_OBJECTAGG در Transact-SQL
این تابع به شما کمک میکند از دادههای SQL (ستونها، مقادیر یا نتایج تجمیعی) شیء JSON بسازید. زوجهای کلید/مقدار را دریافت میکند و خروجی استاندارد تحویل میدهد.
ویژگیها:
- استفاده در SELECT:
- قابل ترکیب با GROUP BY
یا GROUPING SETS
.
- ساخت آرایههای JSON:
- برای آرایه به جای شیء، از JSON_ARRAYAGG
استفاده کنید.
- دسترسی:
- در Azure SQL Database، Azure SQL Managed Instance (با Always-up-to-date) و Fabric Data Warehouse در دسترس است.
مثالهای کدی
مثال ۱: ساخت شیء JSON از دادههای یک جدول
فرض کنید جدولی به اسم Employees
داریم با ستونهای EmployeeID
و Name
. میخواهیم یک شیء JSON بسازیم که EmployeeID
کلید و Name
مقدار باشد.
SELECT JSON_OBJECTAGG(EmployeeID, Name) AS EmployeeJson
FROM Employees;
خروجی نمونه:
{
"1": "Ali Rezaei",
"2": "Sara Ahmadi",
"3": "Mohammad Hosseini"
}
مثال ۲: ترکیب با GROUP BY برای دادههای تجمیعی
فرض کنید جدولی به اسم
Orders
داریم با ستونهای CustomerID
و OrderAmount
. میخواهیم برای هر مشتری مجموع سفارشات را به صورت JSON برگردانیم.SELECT CustomerID,
JSON_OBJECTAGG(OrderID, OrderAmount) AS OrderSummary
FROM Orders
GROUP BY CustomerID;
خروجی نمونه:
[
{"CustomerID": 101, "OrderSummary": {"Order1": 500, "Order2": 750}},
{"CustomerID": 102, "OrderSummary": {"Order3": 300}}
]
‼️برای دیدن نمونه مثال و مطالعه بیشتر به لینکهای زیر مراجعه کنید:
🔗لینک اول
🔗لینک دوم
🔗لینک سوم
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
_______
>>Click here to continue<<