TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2298 2.57K
کار با داده‌های 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

_______
Microsoft News Announcing the General Availability (GA) of JSON data type & JSON aggregates… We are excited to announce the General Availability of the native JSON data type and JSON aggregates.
  • 👍 12
  • 👏 4
  • ❤ 2
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →