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

JSON_SET () बनाम JSON_INSERT () बनाम JSON_REPLACE () MySQL में:क्या अंतर है?

MySQL में, JSON दस्तावेज़ों के साथ काम करने में आपकी सहायता करने के लिए कई फ़ंक्शन हैं। इनमें शामिल हैं JSON_SET() , JSON_INSERT() , और JSON_REPLACE() कार्य।

ये तीन कार्य संबंधित हैं, फिर भी वे थोड़े भिन्न हैं।

सिंटैक्स

सबसे पहले, यहाँ तीनों कार्यों के लिए वाक्य रचना है:

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

तो तीनों कार्य एक ही तर्क को स्वीकार करते हैं। ये तर्क किस लिए हैं:

  • json_doc JSON दस्तावेज़ है।
  • path उस तत्व का पथ है जिसके लिए डेटा सम्मिलित करना है या मान को अद्यतन करना है।
  • val नया मान है।

अंतर

इन कार्यों के बीच अंतर यहां दिया गया है:

  • JSON_SET() मौजूदा मानों को बदल देता है और गैर-मौजूदा मान जोड़ता है।
  • JSON_INSERT() मौजूदा मानों को बदले बिना मान सम्मिलित करता है।
  • JSON_REPLACE() केवल मौजूदा मानों को प्रतिस्थापित करता है।

तो मूल रूप से आप किसका उपयोग करते हैं, यह इस बात पर निर्भर करता है कि आप मौजूदा मान को अपडेट कर रहे हैं या कोई नया सम्मिलित कर रहे हैं (हालांकि JSON_SET() दोनों करता है)।

उदाहरण 1 - एक मान डालें

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

JSON_SET ()

अगर हम JSON_SET() . का उपयोग करके एक नया मान डालने का प्रयास करते हैं तो यहां क्या होता है :

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

परिणाम:

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

तो इसने पूरी तरह से काम किया।

JSON_INSERT()

अगर हम JSON_INSERT() . का उपयोग करके एक नया मान डालने का प्रयास करते हैं तो यहां क्या होता है :

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

परिणाम:

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

बिल्कुल वैसा ही परिणाम JSON_SET() . के साथ ।

JSON_REPLACE()

अगर हम JSON_REPLACE() . का उपयोग करके एक नया मान डालने का प्रयास करते हैं तो यहां क्या होता है? :

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

परिणाम:

+------------------+
| Result           |
+------------------+
| {"a": 1, "b": 2} |
+------------------+

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

उदाहरण 2 - मौजूदा मान अपडेट करें

अब मौजूदा मानों को अपडेट करने के लिए।

JSON_SET ()

अगर हम JSON_SET() . का उपयोग करके मौजूदा मान को अपडेट करने का प्रयास करते हैं तो यहां क्या होता है :

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

परिणाम:

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

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

JSON_INSERT()

अगर हम JSON_INSERT() . का उपयोग करके किसी मौजूदा मान को अपडेट करने का प्रयास करते हैं तो यहां क्या होता है? :

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

परिणाम:

+------------------+
| Result           |
+------------------+
| {"a": 1, "b": 2} |
+------------------+

इस मामले में मौजूदा मान अपडेट नहीं किया गया था। JSON दस्तावेज़ अपरिवर्तित लौटा दिया गया है। ऐसा इसलिए है क्योंकि JSON_INSERT() फ़ंक्शन केवल नए मान सम्मिलित करता है - यह मौजूदा मानों को अपडेट नहीं करता है।

JSON_REPLACE()

अगर हम JSON_REPLACE() . का उपयोग करके मौजूदा मान को अपडेट करने का प्रयास करते हैं तो यहां क्या होता है? :

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

परिणाम:

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

यह पूरी तरह से अपडेट होता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फ्लोट और दशमलव डेटा प्रकार के बीच अंतर

  2. विंडोज 10 पर कार्यक्षेत्र के साथ MySQL 8 कैसे स्थापित करें

  3. मैं एक अद्यतन क्वेरी में तीन टेबल जॉइन कैसे कर सकता हूं?

  4. क्या अलग-अलग डेटाबेस अलग-अलग नाम उद्धरण का उपयोग करते हैं?

  5. mysql -> tbl में डालें (किसी अन्य तालिका से चुनें) और कुछ डिफ़ॉल्ट मान