فرمت 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
_______