Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

JSON_MODIFY () SQL सर्वर में उदाहरण (T-SQL)

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 कुंजी का नाम बदलने का तरीका देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सर्वर के साथ एक कनेक्शन सफलतापूर्वक स्थापित किया गया था, लेकिन फिर प्री-लॉगिन हैंडशेक के दौरान एक त्रुटि हुई

  2. SQL सर्वर में UTC मिलीसेकंड को DATETIME में कनवर्ट करें

  3. डेटा और सूचना और डेटा वॉल्यूम क्या है

  4. प्राथमिक कुंजी आईडी के साथ क्या होता है जब यह सीमा से अधिक हो जाता है?

  5. SQL सर्वर (T-SQL) में SPACE () फ़ंक्शन कैसे काम करता है