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

JSON_REPLACE () - MySQL में JSON दस्तावेज़ में मान बदलें

MySQL में, JSON_REPLACE() फ़ंक्शन JSON दस्तावेज़ में मानों को बदल देता है और परिणाम देता है।

आप पहले तर्क के रूप में JSON दस्तावेज़ प्रदान करते हैं, उसके बाद डेटा को प्रतिस्थापित करने के लिए पथ, उसके बाद मौजूदा मान को प्रतिस्थापित करने के लिए मान के साथ प्रदान करते हैं।

यदि आवश्यक हो तो आप दस्तावेज़ में कई स्थानों पर डेटा को बदल सकते हैं। ऐसा करने के लिए, बस आवश्यकतानुसार एकाधिक पथ/मान जोड़े प्रदान करें।

सिंटैक्स

वाक्य रचना इस प्रकार है:

JSON_REPLACE(json_doc, path, val[, path, val] ...)

जहां json_doc JSON दस्तावेज़ है, path पर डेटा को बदलने का पथ है, और val मौजूदा मान को बदलने के लिए नया मान है।

पथ/मान जोड़े का मूल्यांकन बाएं से दाएं किया जाता है। एक जोड़ी का मूल्यांकन करके तैयार किया गया दस्तावेज़ नया मान बन जाता है जिसके विरुद्ध अगले जोड़े का मूल्यांकन किया जाता है।

यदि पथ/मान युग्म JSON दस्तावेज़ में मौजूद नहीं है, तो इसे अनदेखा कर दिया जाता है और इसका कोई प्रभाव नहीं पड़ता है।

पहला तर्क एक वैध JSON दस्तावेज़ होना चाहिए, अन्यथा कोई त्रुटि होती है।

साथ ही, path तर्क एक मान्य पथ अभिव्यक्ति होना चाहिए, और इसमें * . नहीं हो सकता या ** वाइल्डकार्ड, अन्यथा कोई त्रुटि उत्पन्न होगी।

उदाहरण 1 - मूल उपयोग

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

SELECT JSON_REPLACE('{"a": 1, "b": 2, "c": 3}', '$.b', 9) AS 'Result';

परिणाम:

+--------------------------+
| Result                   |
+--------------------------+
| {"a": 1, "b": 9, "c": 3} |
+--------------------------+

इस मामले में, हमने b . को बदल दिया है का मान 9 . के साथ . ऐसा इसलिए है क्योंकि हमने $.b . निर्दिष्ट किया है दूसरे तर्क के रूप में, और 9 तीसरे के रूप में।

यहां एक और उदाहरण दिया गया है:

SELECT 
  JSON_REPLACE('{"Name": "Bart", "Age": 10}', '$.Name', 'Nelson - Ha Ha!') AS 'Result';

परिणाम:

+----------------------------------------+
| Result                                 |
+----------------------------------------+
| {"Age": 10, "Name": "Nelson - Ha Ha!"} |
+----------------------------------------+

उदाहरण 2 - अस्तित्वहीन पथ

यदि आप कोई ऐसा पथ निर्दिष्ट करते हैं जो मौजूद नहीं है, तो कुछ भी नहीं हटाया जाता है। मूल JSON दस्तावेज़ बिना किसी संशोधन के लौटा दिया जाता है।

SELECT 
  JSON_REPLACE('{"Name": "Homer", "Age": 39}', '$.Gender', 'Male') AS 'Result';

परिणाम:

+------------------------------+
| Result                       |
+------------------------------+
| {"Age": 39, "Name": "Homer"} |
+------------------------------+

उदाहरण 3 - सरणी

यहाँ एक सरणी का उपयोग करके एक उदाहरण दिया गया है।

SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) AS 'Result';

परिणाम:

+-----------+
| Result    |
+-----------+
| [9, 2, 3] |
+-----------+

सरणियाँ शून्य-आधारित क्रमांकन का उपयोग करती हैं, इसलिए इस मामले में, पहले तत्व को बदल दिया जाता है।

यहाँ एक और सरणी उदाहरण है। इस बार हम एक नेस्टेड सरणी में एक मान बदलते हैं।

SELECT JSON_REPLACE('[1, 2, [3, 4, 5]]', '$[2][1]', 9) AS 'Result';

परिणाम:

+-------------------+
| Result            |
+-------------------+
| [1, 2, [3, 9, 5]] |
+-------------------+

उदाहरण 4 - एकाधिक पथ

आप JSON दस्तावेज़ में एक से अधिक स्थानों पर डेटा को बदलने के लिए एक से अधिक पथ निर्दिष्ट कर सकते हैं।

मूल उदाहरण:

SELECT JSON_REPLACE('[1, 2, 3, 4, 5]', '$[1]', 9, '$[3]', 22) AS 'Result';

परिणाम:

+------------------+
| Result           |
+------------------+
| [1, 9, 3, 22, 5] |
+------------------+

उदाहरण 5 - एक बड़ा JSON दस्तावेज़

यहां एक (थोड़ा) बड़ा JSON दस्तावेज़ वाला एक उदाहरण दिया गया है।

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_REPLACE(@data, '$.Person.Name', 'Bart', '$.Person.Age', 10, '$.Person.Hobbies[1]', 'Base Jumping') AS 'Result';

परिणाम:

+--------------------------------------------------------------------------------+
| Result                                                                         |
+--------------------------------------------------------------------------------+
| {"Person": {"Age": 10, "Name": "Bart", "Hobbies": ["Eating", "Base Jumping"]}} |
+--------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज़ के लिए एक्सएएमपीपी में mysql क्लाइंट .my.cnf का स्थान क्या है?

  2. MySQL में डुप्लीकेट पंक्तियों को खोजने के 4 तरीके

  3. #1139 - regexp . से त्रुटि 'पुनरावृत्ति-संचालक संकार्य अमान्य' मिला

  4. MySQL में Key, Primary Key, Unique Key और Index के बीच अंतर

  5. डॉकर-लिखें जांचें कि क्या MySQL कनेक्शन तैयार है