MySQL में, JSON_MERGE_PATCH()
फ़ंक्शन डुप्लिकेट कुंजियों वाले सदस्यों को संरक्षित किए बिना, दो या अधिक JSON दस्तावेज़ों का RFC 7396 अनुपालक मर्ज निष्पादित करता है।
आप तर्क के रूप में JSON दस्तावेज़ प्रदान करते हैं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)
जहां json_doc
मर्ज किए जाने वाले JSON दस्तावेज़ हैं। यदि कोई दस्तावेज़ अमान्य है, तो एक त्रुटि उठाई जाती है।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT JSON_MERGE_PATCH('{"Name": "Homer"}', '{"Age": 39}') Result;
परिणाम:
+------------------------------+ | Result | +------------------------------+ | {"Age": 39, "Name": "Homer"} | +------------------------------+
तो इस उदाहरण में, हमने दो अलग-अलग वस्तुओं को एक वस्तु में मिला दिया।
उदाहरण 2 - डुप्लीकेट कुंजियां
जैसा कि उल्लेख किया गया है, यह फ़ंक्शन डुप्लिकेट कुंजियों वाले सदस्यों को संरक्षित नहीं करता है। उदाहरण:
SELECT JSON_MERGE_PATCH('{"Name": "Bartholomew"}', '{"Name": "Bart"}') Result;
परिणाम:
+------------------+ | Result | +------------------+ | {"Name": "Bart"} | +------------------+
तो इस मामले में बार्ट जीत गए।
यदि आप सदस्यों को डुप्लीकेट कुंजियों से सुरक्षित रखना चाहते हैं तो JSON_MERGE_PRESERVE()
का उपयोग करें इसके बजाय कार्य करें। इस उदाहरण के लिए उस फ़ंक्शन का उपयोग करने से Name
हो जाएगा Bartholomew
. दोनों वाली एक सरणी में और Bart
. इस तरह:
SELECT JSON_MERGE_PRESERVE('{"Name": "Bartholomew"}', '{"Name": "Bart"}') Result;
परिणाम:
+-----------------------------------+ | Result | +-----------------------------------+ | {"Name": ["Bartholomew", "Bart"]} | +-----------------------------------+
उदाहरण 3 - एकाधिक सदस्य
यहाँ एक और उदाहरण है, लेकिन वस्तु में एक अतिरिक्त सदस्य के साथ:
SELECT JSON_MERGE_PATCH('{"Name": "Bartholomew", "Age": 10}', '{"Name": "Bart"}') Result;
परिणाम:
+-----------------------------+ | Result | +-----------------------------+ | {"Age": 10, "Name": "Bart"} | +-----------------------------+
तो, बार्ट अभी भी जीतता है, और उसे पहले ऑब्जेक्ट के अन्य सदस्यों के साथ मिला दिया गया है।
बेशक, यह दूसरे तरीके से भी काम करता है - यदि हम दूसरी वस्तु में अतिरिक्त सदस्य जोड़ते हैं तो परिणाम समान होता है।
SELECT JSON_MERGE_PATCH('{"Name": "Bartholomew"}', '{"Name": "Bart", "Age": 10}') Result;
परिणाम:
+-----------------------------+ | Result | +-----------------------------+ | {"Age": 10, "Name": "Bart"} | +-----------------------------+
उदाहरण 4 - अधिक दस्तावेज़
आप केवल दो दस्तावेज़ों को मर्ज करने तक सीमित नहीं हैं। आप जितने चाहें उतने मर्ज कर सकते हैं। यहां तीन वस्तुओं को मिलाने का एक उदाहरण दिया गया है।
SELECT JSON_MERGE_PATCH('{"Name": "Bart"}', '{"Age": 10}', '{"Hair Color": "Yellow"}') Result;
परिणाम:
+-----------------------------------------------------+ | Result | +-----------------------------------------------------+ | {"Age": 10, "Name": "Bart", "Hair Color": "Yellow"} | +-----------------------------------------------------+
उदाहरण 5 - सरणी
एक ही नाम के दो सरणियों को मिलाने से उनमें से केवल एक ही संरक्षित रहेगा:
SELECT JSON_MERGE_PATCH('{"Hobbies": ["Trouble", "Mischief"]}', '{"Hobbies": ["Skateboarding"]}') Result;
परिणाम:
+--------------------------------+ | Result | +--------------------------------+ | {"Hobbies": ["Skateboarding"]} | +--------------------------------+
फिर से, आप JSON_MERGE_PRESERVE()
. का उपयोग कर सकते हैं यदि आपको दोनों सरणियों को संरक्षित करने की आवश्यकता है। तो पिछला उदाहरण निम्नलिखित को फिर से लिखा जा सकता है:
SELECT JSON_MERGE_PRESERVE('{"Hobbies": ["Trouble", "Mischief"]}', '{"Hobbies": ["Skateboarding"]}') Result;
परिणाम:
+-------------------------------------------------------+ | Result | +-------------------------------------------------------+ | {"Hobbies": ["Trouble", "Mischief", "Skateboarding"]} | +-------------------------------------------------------+
उदाहरण 6 - एक बड़ा JSON दस्तावेज़
यहां एक उदाहरण दिया गया है जो बड़े JSON दस्तावेज़ों को (थोड़ा) मर्ज करता है।
SET @data1 = '{ "Suspect": { "Name": "Bart", "Hobbies": ["Skateboarding", "Mischief"] } }', @data2 = '{ "Suspect": { "Age": 10, "Parents": ["Marge", "Homer"] } }'; SELECT JSON_MERGE_PATCH(@data1, @data2) Result;
परिणाम:
+-------------------------------------------------------------------------------------------------------------------+ | Result | +-------------------------------------------------------------------------------------------------------------------+ | {"Suspect": {"Age": 10, "Name": "Bart", "Hobbies": ["Skateboarding", "Mischief"], "Parents": ["Marge", "Homer"]}} | +-------------------------------------------------------------------------------------------------------------------+
यह फ़ंक्शन कैसे मर्ज करता है, इसके सटीक नियमों के लिए, MySQL दस्तावेज़ देखें।