πΉ JSON kya hota hai? (Quick recap)
JSON (JavaScript Object Notation) ek lightweight text format hota hai data exchange ke liye.
Example:
{
"empId": 101,
"name": "Amit",
"skills": ["SQL", "Python"],
"address": { "city": "Delhi", "pin": 110001 }
}
πΉ SQL Server me JSON ka support
SQL Server JSON ko as a data type store nahi karta
β JSON plain NVARCHAR column me store hota hai
β SQL Server JSON ko parse, read, modify kar sakta hai
β JSON ke liye native data type nahi hai (PostgreSQL jaisa nahi)
πΉ Kaunse SQL Server versions JSON support karte hain?
| SQL Server Version | JSON Support |
|---|---|
| SQL Server 2014 β | β Not supported |
| SQL Server 2016 | β Supported (first time) |
| SQL Server 2017 | β |
| SQL Server 2019 | β |
| SQL Server 2022 | β |
| Azure SQL DB | β |
π Minimum required: SQL Server 2016+
πΉ JSON Store karna (Basic Example)
CREATE TABLE Employees (
EmpID INT,
EmpData NVARCHAR(MAX)
)
INSERT INTO Employees VALUES
(1, '{
"name":"Rohit",
"age":30,
"skills":["SQL","Azure"],
"address":{"city":"Mumbai","pin":400001}
}')
πΉ 1οΈβ£ ISJSON() β JSON valid hai ya nahi
Definition: JSON format valid hai ya nahi check karta hai
SELECT ISJSON(EmpData) FROM Employees
β Returns 1 β valid JSON
β Returns 0 β invalid JSON
πΉ 2οΈβ£ JSON_VALUE() β Scalar value read karna
Definition: JSON se single value nikalta hai
SELECT
JSON_VALUE(EmpData, '$.name') AS Name,
JSON_VALUE(EmpData, '$.skills[1]') AS skill,
JSON_VALUE(EmpData, '$.address.city') AS City
FROM Employees
β Limitation:
- Max 4000 characters
- Scalar value return karta hai β
- Array ya object return β
πΉ 3οΈβ£ JSON_QUERY() β Object / Array nikalna
Definition: JSON ka object ya array read karta hai
SELECT
JSON_QUERY(EmpData, '$.skills') AS Skills,
JSON_QUERY(EmpData, '$.address') AS Address
FROM Employees
β Array / Object return
β Scalar value return nahi karta

πΉ JSON_VALUE vs JSON_QUERY (Interview favorite)
| Feature | JSON_VALUE | JSON_QUERY |
|---|---|---|
| Scalar value | β | β |
| Object / Array | β | β |
| Max length | 4000 chars | NVARCHAR(MAX) |
πΉ 4οΈβ£ OPENJSON() β JSON ko table me convert karna
Definition: JSON ko row & column format me tod deta hai
Simple example:
SELECT E.*,A.*
FROM Employees E
CROSS APPLY OPENJSON(E.EmpData) A

Structured extraction (best practice): All Time
SELECT E.*, A.*
FROM Employees E
CROSS APPLY OPENJSON(E.EmpData)
WITH (
Name NVARCHAR(100) '$.name',
Age INT '$.age',
City NVARCHAR(50) '$.address.city'
) AS A;

β Yeh ETL aur reporting ke liye sabse powerful hai
Array ko rows me convert karna
SELECT skill
FROM Employees
CROSS APPLY OPENJSON(EmpData, '$.skills')
WITH (skill NVARCHAR(50) '$')
Full JSON Output
SELECT
E.EmpID,
A.Name,
A.Age,
S.value AS Skill
FROM Employees E
CROSS APPLY OPENJSON(E.EmpData)
WITH (
Name NVARCHAR(100) '$.name',
Age INT '$.age',
Skills NVARCHAR(MAX) '$.skills' AS JSON
) AS A
CROSS APPLY OPENJSON(A.Skills) AS S;
--Note:- Comma seperate SKill as per yours choice.

πΉ 5οΈβ£ JSON_MODIFY() β JSON update karna
Definition: JSON ke andar value update karta hai
UPDATE Employees
SET EmpData = JSON_MODIFY(EmpData, '$.age', 31)
WHERE EmpID = 1
Array me value add:
SET EmpData = JSON_MODIFY(EmpData, 'append $.skills', 'PowerBI')
πΉ Indexing JSON data (Performance ke liye)
SQL Server JSON index directly allow nahi karta,
lekin Computed Column + Index bana sakte ho:
ALTER TABLE Employees
ADD City AS JSON_VALUE(EmpData, '$.address.city')
CREATE INDEX IX_Employees_City ON Employees(City)
π₯ Yeh production-level best practice hai