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

JSON_MERGE_PATCH () बनाम JSON_MERGE_PRESERVE () MySQL में:क्या अंतर है?

MySQL में JSON दस्तावेज़ों के साथ काम करने के लिए कई फ़ंक्शन शामिल हैं। इनमें से JSON_MERGE_PATCH() हैं और JSON_MERGE_PRESERVE() कार्य।

ये दोनों फ़ंक्शन दो या अधिक JSON दस्तावेज़ों को मर्ज करते हैं और परिणाम लौटाते हैं। हालांकि, ऐसे कुछ मामले हैं जहां ये फ़ंक्शन एक अलग परिणाम लौटाएंगे। अपने किसी भी प्रश्न में उन्हें शामिल करने से पहले आपको इसके बारे में पता होना चाहिए।

सिंटैक्स

सबसे पहले, यहां प्रत्येक फ़ंक्शन के लिए सिंटैक्स दिया गया है:

JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)

जहां json_doc मर्ज किए जाने वाले JSON दस्तावेज़ हैं।

इसलिए दोनों फ़ंक्शन दो या दो से अधिक तर्कों को स्वीकार करते हैं, जिनमें से प्रत्येक मर्ज किए जाने वाले JSON दस्तावेज़ों का प्रतिनिधित्व करते हैं।

अंतर

निम्नलिखित दो अपवादों के साथ दोनों फ़ंक्शन बिल्कुल समान कार्य करते हैं:

  • JSON_MERGE_PATCH() पहली ऑब्जेक्ट में किसी भी सदस्य को दूसरी ऑब्जेक्ट में मिलान कुंजी के साथ हटा देता है, बशर्ते कि दूसरी ऑब्जेक्ट में कुंजी से संबद्ध मान JSON नल न हो।
  • यदि दूसरी वस्तु में एक सदस्य है जिसकी कुंजी पहली वस्तु में एक सदस्य से मेल खाती है, JSON_MERGE_PATCH() पहली वस्तु के मान को दूसरी वस्तु के मान से बदल देता है, जबकि JSON_MERGE_PRESERVE() दूसरे मान को पहले मान में जोड़ता है।

इसलिए मूल रूप से, वे डुप्लीकेट कुंजियों को संभालने के तरीके में भिन्न हैं।

उदाहरण

इन दो कार्यों के बीच अंतर को प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

SELECT 
  JSON_MERGE_PATCH('{"Name": "Bartholomew"}', '{"Name": "Bart"}') JSON_MERGE_PATCH,
  JSON_MERGE_PRESERVE('{"Name": "Bartholomew"}', '{"Name": "Bart"}') JSON_MERGE_PRESERVE;

परिणाम:

+------------------+-----------------------------------+
| JSON_MERGE_PATCH | JSON_MERGE_PRESERVE               |
+------------------+-----------------------------------+
| {"Name": "Bart"} | {"Name": ["Bartholomew", "Bart"]} |
+------------------+-----------------------------------+

हम देख सकते हैं कि JSON_MERGE_PATCH() पहली वस्तु के मूल्य को बदल दिया (Bartholomew ) दूसरे ऑब्जेक्ट मान के साथ (Bart )।

JSON_MERGE_PRESERVE() दूसरी ओर, एक सरणी बनाई और इसे दोनों मानों से भर दिया।

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

यहां एक ही नाम के दो सरणियों को मर्ज करने का एक उदाहरण दिया गया है:

SELECT 
  JSON_MERGE_PATCH('{"Hobbies": ["Trouble", "Mischief"]}', '{"Hobbies": ["Skateboarding"]}') JSON_MERGE_PATCH,
  JSON_MERGE_PRESERVE('{"Hobbies": ["Trouble", "Mischief"]}', '{"Hobbies": ["Skateboarding"]}') JSON_MERGE_PRESERVE;

परिणाम:

+--------------------------------+-------------------------------------------------------+
| JSON_MERGE_PATCH               | JSON_MERGE_PRESERVE                                   |
+--------------------------------+-------------------------------------------------------+
| {"Hobbies": ["Skateboarding"]} | {"Hobbies": ["Trouble", "Mischief", "Skateboarding"]} |
+--------------------------------+-------------------------------------------------------+

तो इस मामले में, JSON_MERGE_PATCH() पहली सरणी के सभी तत्वों को दूसरी सरणी के तत्व से बदल दिया है।

JSON_MERGE_PRESERVE() बस दोनों सरणियों के मानों को एक में मिला दिया है।

जाहिर है, अगर सरणियों के अलग-अलग नाम हैं, तो वे अलग-अलग सरणियों के रूप में समाप्त होंगे (लेकिन एक ही JSON दस्तावेज़ के भीतर)। तो ऐसे मामलों में, दोनों फ़ंक्शन एक ही परिणाम देंगे।

SELECT 
  JSON_MERGE_PATCH('{"Hobbies": ["Trouble", "Mischief"]}', '{"Hobby": ["Skateboarding"]}') AS Result
UNION ALL
SELECT 
  JSON_MERGE_PRESERVE('{"Hobbies": ["Trouble", "Mischief"]}', '{"Hobby": ["Skateboarding"]}');

परिणाम:

+------------------------------------------------------------------+
| Result                                                           |
+------------------------------------------------------------------+
| {"Hobby": ["Skateboarding"], "Hobbies": ["Trouble", "Mischief"]} |
| {"Hobby": ["Skateboarding"], "Hobbies": ["Trouble", "Mischief"]} |
+------------------------------------------------------------------+

  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, MariaDB, PostgreSQL और MongoDB प्रबंधन पर बार बढ़ाना

  2. जॉइन करके किसी अन्य तालिका से गैर-मौजूदा डेटा कैसे खोजें?

  3. MySQL - गिराए गए प्रदर्शन स्कीमा डेटाबेस को पुनर्प्राप्त करें

  4. CentOS 8 / RHEL 8 . पर MySQL 8.0 कैसे स्थापित करें

  5. Mysql में अक्षांश और देशांतर का उपयोग करके दो बिंदुओं के बीच की दूरी का पता लगाएं