JSON (J अवाएस क्रिप्ट ओ वस्तु N otation) विशेष रूप से REST API में डेटा के आदान-प्रदान के लिए बहुत लोकप्रिय मानक है। लगभग सभी आधुनिक वेबसाइट, एंड्रॉइड या आईओएस ऐप सर्वर के साथ डेटा का आदान-प्रदान करने के लिए इसका इस्तेमाल करते हैं। SQL सर्वर 2016 से, Microsoft कुछ अंतर्निहित कार्यों के माध्यम से JSON के लिए अपना समर्थन बढ़ाता है। इस तरह SQL सर्वर पारंपरिक रिलेशनल डेटाबेस में NOSQL सुविधाओं का समर्थन करता है। आइए इसकी जांच करें:
- ISJSON - एक स्ट्रिंग की जांच करता है कि एक वैध JSON है या नहीं
- JSON_VALUE - JSON स्ट्रिंग से मान प्राप्त करता है
- JSON_QUERY - JSON स्ट्रिंग से ऑब्जेक्ट या सरणी प्राप्त करता है
- JSON_MODIFY - अपडेट की गई JSON स्ट्रिंग लौटाता है
- OPENJSON - JSON टेक्स्ट को पार्स करता है और JSON इनपुट से वस्तुओं और गुणों को पंक्तियों और स्तंभों के रूप में लौटाता है
- JSON क्लॉज के लिए - SQL डेटा को JSON फॉर्मेट में एक्सपोर्ट करता है
ISJSON फ़ंक्शन
DECLARE @json NVARCHAR(MAX);
SET @json = N'{
"info":[
{
"id":"1",
"name":"Robert Aragon",
"ssn":"489-36-8350",
"credit_card":[
"4929-3813-3266-4295",
"5370-4638-8881-3020"
],
"address":{
"town":"Avon",
"area":"New York",
"zipcode":"76148"
}
},
{
"id":"2",
"name":"Thomas Conley",
"ssn":"690-05-5315",
"credit_card":[
"5299-1561-5689-1938"
],
"address":{
"town":"Jackson Street",
"area":"New York",
"zipcode":"80233"
}
},
{
"id":"3",
"name":"Susan Davis",
"ssn":"421-37-1396",
"credit_card":[
"5293-8502-0071-3058"
],
"address":{
"town":"Rock Beach",
"area":"Los angeles",
"zipcode":"900341"
}
},
{
"id":"4",
"name":"Christopher Diaz",
"ssn":"458-02-6124",
"credit_card":[
"5548-0246-6336-5664"
],
"address":{
"town":"Small town",
"area":"Wasshington",
"zipcode":"63126"
}
},
{
"id":"5",
"name":"Rick Edwards",
"ssn":"612-20-6832",
"credit_card":[
"4539-5385-7425-5825"
],
"address":{
"town":"Free Town",
"area":"Utah",
"zipcode":"97222"
}
},
{
"id":"6",
"name":"Victor Faulkner",
"ssn":"300-62-3266",
"credit_card":[
"4916-9766-5240-6147",
"4532-4220-6922-9909",
"5218-0144-2703-9266"
],
"address":{
"town":"Dakota",
"area":"North Dakota",
"zipcode":"92104"
}
}
]
}
';
SELECT ISJSON(@json); . चुनें आउटपुट
1 -- 1 if it is a valid JSON otherwise 0
JSON_VALUE फ़ंक्शन
इस फ़ंक्शन का उपयोग JSON स्ट्रिंग से स्केलर मान प्राप्त करने के लिए किया जाता है। इसका सिंटैक्स है
JSON_VALUE(expression, path)
अभिव्यक्ति एक चर या कॉलम का नाम है जिसमें JSON टेक्स्ट होता है और निकालने की संपत्ति है। उदाहरण के लिए, उपरोक्त JSON स्ट्रिंग पर नीचे दिए गए कथन को चलाने से निम्न आउटपुट प्राप्त होगा:
SELECT JSON_VALUE(@json, '$.info[3].credit_card[0]')
आउटपुट
5548-0246-6336-5664
JSON_VALUE फ़ंक्शन nvarchar(4000) प्रकार का एकल टेक्स्ट मान देता है। यह शून्य . लौटाता है यदि निर्दिष्ट पथ JSON ऑब्जेक्ट में नहीं मिला है या मान nvarchar(4000) से परे है। ‘सख्त का उपयोग करना ' पथ से पहले कीवर्ड त्रुटि फेंक देगा यदि निर्दिष्ट पथ JSON ऑब्जेक्ट में उपलब्ध नहीं है।
JSON_QUERY फ़ंक्शन
द JSON_QUERY(अभिव्यक्ति [पथ]) फ़ंक्शन एक चर या कॉलम का नाम लेता है जिसमें JSON टेक्स्ट और JSON पथ होता है जो ऑब्जेक्ट या सरणी को इसके तर्क के रूप में निकालने के लिए निर्दिष्ट करता है।
आउटपुट

यह nvarchar(max) . प्रकार का JSON खंड लौटाता है . जैसे JSON_VALUE फ़ंक्शन शून्य लौटाता है यदि निर्दिष्ट मान कोई ऑब्जेक्ट या सरणी नहीं है। 'सख्त' कीवर्ड का उपयोग करने से त्रुटि हो जाएगी।
JSON_MODIFY फ़ंक्शन
यह JSON स्ट्रिंग में किसी प्रॉपर्टी के मान को अपडेट करता है और अपडेट की गई JSON स्ट्रिंग लौटाता है। यह तर्क के रूप में अभिव्यक्ति, पथ और नया लेता है। इस फ़ंक्शन का उपयोग करके, हम JSON स्ट्रिंग पर निम्न कार्य कर सकते हैं:
- अपडेट करें
- सम्मिलित करें
- हटाएं
- जोड़ें
किसी दिए गए पथ का मान अपडेट करता है।
SELECT JSON_MODIFY(@json,'$.info[0].name', 'Mehedi')
आउटपुट

2. सम्मिलित करें
JSON स्ट्रिंग में नया मान जोड़ा जाता है यदि दिए गए पथ में विशेषता मौजूद नहीं है। अन्यथा यह उपरोक्त उदाहरण के अनुसार मौजूदा मान को अपडेट कर देगा। JSON के अंत में नई विशेषता जोड़ी जाती है।
SELECT JSON_MODIFY(@json,'$.info[0].last_name', 'Mehedi')
आउटपुट

3. मिटाएं
NULL मान को पथ में डालने से वह बस हट जाएगा।
SELECT JSON_MODIFY(@json,'$.info[0].name', NULL)
आउटपुट

4. संलग्न करें
नया तत्व नीचे की तरह सरणी में जोड़ा जा सकता है:
SELECT JSON_MODIFY(@json,'append $.info[0].credit_card','4539-5385-7425-5825')चुनें
आउटपुट

OPENJSON फ़ंक्शन
यह एक टेबल-वैल्यू फंक्शन है जो JSON टेक्स्ट को पार्स करता है और JSON इनपुट से ऑब्जेक्ट्स और प्रॉपर्टीज को रो और कॉलम के रूप में लौटाता है।
DECLARE @json NVARCHAR(MAX);
SET @json =
N'{"id":"1", "name": "Robert Aragon", "ssn": "489-36-8350",
"credit_card":["4929-3813-3266-4295","5370-4638-8881-3020"], "address":
{"town": "Avon", "area": "New York", "zipcode": "76148"}}';
SELECT * FROM OpenJson(@json)
with (
id int '$.id',
name varchar(50) '$.name',
ssn varchar(50) '$.ssn',
[credit_card] nvarchar(MAX) AS JSON,
[address] nvarchar(MAX) AS JSON
) आउटपुट

JSON क्लॉज के लिए
JSON प्रारूप में SQL तालिका डेटा निर्यात करने के लिए इस खंड का व्यापक रूप से TSQL के साथ उपयोग किया जाता है। इसके दो प्रकार हैं:
- ऑटो - डिफ़ॉल्ट JSON आउटपुट AUTO विकल्प का उपयोग करके जेनरेट किया जाता है।
- PATH - JSON की संरचना को PATH विकल्प का उपयोग करके कॉलम नाम या उपनाम द्वारा संशोधित किया जा सकता है
IF OBJECT_ID('Test1', 'U') IS NOT NULL
DROP TABLE Test1;
GO
-- Create the table
CREATE TABLE Test1(
pk_id int not null identity(1,1),
name varchar(10) default ('Mehedi')
)
GO
-- Populate with 3 sample data
INSERT INTO Test1 default values
GO 2
IF OBJECT_ID('Test2', 'U') IS NOT NULL
DROP TABLE Test2;
GO
-- Create the table
CREATE TABLE Test2(
pk_id int not null identity(1,1),
area varchar(10) default ('Dhanmondi'),
city varchar(10) default ('Dhaka')
)
GO
-- Populate with 3 sample data
INSERT INTO Test2 default values
GO 1
-- Example of AUTO
SELECT A.pk_id, A.name, (SELECT pk_id, area, city
FROM Test2 B
WHERE A.pk_id = B.pk_id
FOR JSON AUTO
) as test2
FROM Test1 A
FOR JSON AUTO
-- Example of PATH
SELECT A.pk_id, A.name, (SELECT pk_id as id, area, city
FROM Test2 B
WHERE A.pk_id = B.pk_id
FOR JSON AUTO
) as test2
FROM Test1 A
FOR JSON PATH , ROOT ('EmployeeInfo')
GO
आउटपुट

निष्कर्ष
यह सब SQL सर्वर में JSON के बारे में है। हैप्पी टीएसक्यूएलिंग!
यह लेख मेरे ब्लॉग से लिया गया है।