SQL सर्वर में, आप T-SQL JSON_MODIFY()
. का उपयोग कर सकते हैं JSON स्ट्रिंग में किसी संपत्ति के मान को संशोधित करने के लिए कार्य करता है। फ़ंक्शन अपडेट की गई JSON स्ट्रिंग लौटाता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_MODIFY ( expression , path , newValue )
जहां expression
JSON स्ट्रिंग एक्सप्रेशन है, path
उस प्रॉपर्टी का पथ है जिसे आप अपडेट करना चाहते हैं, और newValue
उस संपत्ति पर लागू होने वाला नया मूल्य है।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT JSON_MODIFY('{"Name": "Homer"}', '$.Name', 'Bart') AS 'Result';
परिणाम:
+------------------+ | Result | |------------------| | {"Name": "Bart"} | +------------------+
इस उदाहरण में:
{"Name": "Homer"}
मूल JSON स्ट्रिंग है$.Name
पथ है (यह$.
उसके बाद उस प्रॉपर्टी का पथ जो हम अपडेट करना चाहते हैं)।Bart
वह नया मान है जिसे हमName
. को असाइन करना चाहते हैं (अर्थात वर्तमान मान को बदलने के लिए)
उदाहरण 2 - मूल और संशोधित JSON लौटाएं
ध्यान दें कि JSON_MODIFY()
मूल JSON को संशोधित नहीं करता है। यह एक प्रति लेता है, फिर संशोधित करता है और प्रतिलिपि लौटाता है।
इसे प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:
DECLARE @suspect NVARCHAR(4000) SET @suspect= '{"Name": "Homer"}' SELECT @suspect AS 'Original String', JSON_MODIFY(@suspect, '$.Name', 'Bart') AS 'Modified String', @suspect AS 'Original String';
परिणाम:
+-------------------+-------------------+-------------------+ | Original String | Modified String | Original String | |-------------------+-------------------+-------------------| | {"Name": "Homer"} | {"Name": "Bart"} | {"Name": "Homer"} | +-------------------+-------------------+-------------------+
उदाहरण 3 - नेस्टेड गुण
पथ नेस्टेड गुणों को संदर्भित करने के लिए डॉट-नोटेशन का उपयोग कर सकता है। यहां एक उदाहरण दिया गया है।
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'$.Suspect.Address.City', 'Timaru') AS 'Modified Array';
परिणाम:
+------------------+ | Modified Array | |------------------| | { "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Timaru", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } } | +------------------+
तो हम देख सकते हैं कि शहर को Dunedin
. से बदल दिया गया है करने के लिए Timaru
।
उदाहरण 4 - किसी सरणी में मान अपडेट करें
आप किसी सरणी के भीतर मान भी अपडेट कर सकते हैं। इस उदाहरण में, हम Hobbies
. में एक मान अपडेट करते हैं सरणी।
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'$.Suspect.Hobbies[2]', 'Brain Surgery') AS 'Updated Hobbies';
परिणाम:
+-------------------+ | Updated Hobbies | |-------------------| | { "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Brain Surgery"] } } | +-------------------+
यह देखते हुए कि सरणियाँ शून्य-आधारित नंबरिंग का उपयोग करती हैं, हम Hobbies[2]
को संदर्भित करके तीसरे आइटम को अपडेट करते हैं। ।
उदाहरण 5 - किसी सरणी में मान जोड़ें
इस उदाहरण में, हम Hobbies
. में एक मान जोड़ते हैं सरणी। हम append
. जोड़कर ऐसा करते हैं पथ तर्क की शुरुआत में।
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'append $.Suspect.Hobbies', 'Brain Surgery') AS 'Updated Hobbies';
परिणाम:
+-------------------+ | Updated Hobbies | |-------------------| | { "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping","Brain Surgery"] } } | +-------------------+
उदाहरण 6 - एक संपूर्ण सरणी अपडेट करें
इस उदाहरण में, मैं पूरी सरणी को अपडेट करता हूं।
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'$.Suspect.Hobbies', JSON_QUERY('["Chess", "Brain Surgery"]')) AS 'Updated Hobbies';
परिणाम:
+-------------------+ | Updated Hobbies | |-------------------| | { "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Chess", "Brain Surgery"] } } | +-------------------+
ध्यान दें कि इस उदाहरण में, तीसरा तर्क JSON_QUERY()
. को दिया गया है समारोह। अगर मैंने ऐसा नहीं किया होता, तो SQL सर्वर बैकस्लैश (\
) का उपयोग करके दोहरे उद्धरण चिह्नों और वर्ग कोष्ठकों से बच जाता। ) चरित्र (और इसलिए सरणी को गड़बड़ाना)। उसने ऐसा इसलिए किया होगा क्योंकि यह नहीं पता होगा कि अपडेट किया गया मान एक वास्तविक सरणी है, या एक स्ट्रिंग अक्षर है।
तो इससे बचने के लिए, हम JSON_QUERY()
. का उपयोग कर सकते हैं . यह फ़ंक्शन मान्य JSON देता है, और SQL सर्वर तब मान लेगा कि नया मान एक सरणी है।
अगर हम नहीं होते तो क्या होता प्रयुक्त JSON_QUERY()
:
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'$.Suspect.Hobbies', '["Chess", "Brain Surgery"]') AS 'Updated Hobbies';
परिणाम:
+-------------------+ | Updated Hobbies | |-------------------| | { "Suspect": { "Name": "Homer Simpson", "Address": { "City": "Dunedin", "Region": "Otago", "Country": "New Zealand" }, "Hobbies": "[\"Chess\", \"Brain Surgery\"]" } } | +-------------------+
तो SQL सर्वर वर्ग कोष्ठक और दोहरे उद्धरण चिह्नों से बच गया है।
उदाहरण 7 - एक संपूर्ण ऑब्जेक्ट अपडेट करें
यहां संपूर्ण ऑब्जेक्ट को अपडेट करने का एक उदाहरण दिया गया है।
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'$.Suspect', JSON_QUERY('{"Name": "Peter Griffin", "Hobbies": "None"}')) AS 'Updated Object';
परिणाम:
+------------------+ | Updated Object | |------------------| | { "Suspect": {"Name": "Peter Griffin", "Hobbies": "None"} } | +------------------+
दोबारा, अगर हमने JSON_QUERY()
. का उपयोग नहीं किया होता , हमें एक बची हुई स्ट्रिंग प्राप्त होती:
DECLARE @data NVARCHAR(4000) SET @data=N'{ "Suspect": { "Name": "Homer Simpson", "Hobbies": ["Eating", "Sleeping", "Base Jumping"] } }' SELECT JSON_MODIFY(@data,'$.Suspect', '{"Name": "Peter Griffin", "Hobbies": "None"}') AS 'Updated Object';चुनें
परिणाम:
+------------------+ | Updated Object | |------------------| | { "Suspect": "{\"Name\": \"Peter Griffin\", \"Hobbies\": \"None\"}" } | +------------------+
उदाहरण 8 - एक कुंजी का नाम बदलें
आप केवल संपत्ति के मूल्य को अपडेट करने तक ही सीमित नहीं हैं, आप इसकी कुंजी का नाम भी बदल सकते हैं। यहां एक उदाहरण दिया गया है।
DECLARE @data NVARCHAR(50)='{"Name":"Homer"}' PRINT @data -- Rename the key SET @data= JSON_MODIFY( JSON_MODIFY(@data,'$.Handle', JSON_VALUE(@data,'$.Name')), '$.Name', NULL ) PRINT @data
परिणाम:
{"Name":"Homer"} {"Handle":"Homer"}
यहां, हम मौजूदा संपत्ति से मूल्य लेते हैं और इसे एक नई कुंजी/मूल्य जोड़ी को असाइन करते हैं। फिर हम मूल कुंजी का मान NULL
. पर सेट करते हैं (जो इसे स्वचालित रूप से हटा देता है)।
किसी कुंजी का नाम बदलने के अधिक उदाहरणों के लिए, SQL सर्वर में JSON कुंजी का नाम बदलने का तरीका देखें।