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