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"]}} | +--------------------------------------------------------------------------------+