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

मारियाडीबी JSON_INSERT () समझाया गया

मारियाडीबी में, JSON_INSERT() एक अंतर्निहित फ़ंक्शन है जो JSON दस्तावेज़ में डेटा सम्मिलित करता है, और परिणाम देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

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

जहां json_doc JSON दस्तावेज़ है, path वह पथ है जहां डेटा डाला जाना चाहिए, और val उस पथ पर डाला जाने वाला मान है।

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

SET @json_document = '
    { 
        "name": "Wag"
    }
';
SELECT JSON_INSERT(@json_document, '$.type', "Dog");

परिणाम:

+----------------------------------------------+
| JSON_INSERT(@json_document, '$.type', "Dog") |
+----------------------------------------------+
| {"name": "Wag", "type": "Dog"}               |
+----------------------------------------------+

यहाँ मैंने "type": "Dog" . डाला है दस्तावेज़ में।

इस मामले में, मैंने $.type . का इस्तेमाल किया पथ के रूप में। इसलिए, type कुंजी है और Dog मूल्य है।

जब पथ पहले से मौजूद हो

JSON दस्तावेज़ में पहले से मौजूद पथ को पास करने से मूल दस्तावेज़ अपरिवर्तित रहता है।

उदाहरण:

SET @json_document = '
    { 
        "name": "Wag"
    }
';
SELECT JSON_INSERT(@json_document, '$.name', "Bark");

परिणाम:

+-----------------------------------------------+
| JSON_INSERT(@json_document, '$.name', "Bark") |
+-----------------------------------------------+
| {"name": "Wag"}                               |
+-----------------------------------------------+

सरणी सम्मिलित करना

JSON दस्तावेज़ में सरणी डालने का एक उदाहरण यहां दिया गया है:

SET @json_document = '
    { 
        "name" : "Wag"
    }
';
SELECT JSON_INSERT(@json_document, '$.scores', '[ 8, 7, 9 ]');

परिणाम:

+--------------------------------------------------------+
| JSON_INSERT(@json_document, '$.scores', '[ 8, 7, 9 ]') |
+--------------------------------------------------------+
| {"name": "Wag", "scores": "[ 8, 7, 9 ]"}               |
+--------------------------------------------------------+

सरणी में शामिल करना

यहां JSON_INSERT() का उपयोग करने का एक उदाहरण दिया गया है किसी सरणी में डेटा जोड़ने के लिए:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog" ] 
    }
';
SELECT JSON_INSERT(@json_document, '$.awards[2]', "Biggest Dog");

परिणाम:

+--------------------------------------------------------------+
| JSON_INSERT(@json_document, '$.awards[2]', "Biggest Dog")    |
+--------------------------------------------------------------+
| {"_id": 1, "awards": ["Top Dog", "Best Dog", "Biggest Dog"]} |
+--------------------------------------------------------------+

हालाँकि, हालांकि इसने इस उदाहरण के लिए ठीक काम किया, यह आसानी से विफल हो सकता था। उदाहरण के लिए, यदि हम सरणी में किसी भिन्न स्थान पर मान डालने का प्रयास करते हैं, तो यह काम नहीं करता है:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog" ] 
    }
';
SELECT JSON_INSERT(@json_document, '$.awards[1]', "Biggest Dog");

परिणाम:

+-----------------------------------------------------------+
| JSON_INSERT(@json_document, '$.awards[1]', "Biggest Dog") |
+-----------------------------------------------------------+
| {"_id": 1, "awards": ["Top Dog", "Best Dog"]}             |
+-----------------------------------------------------------+

किसी सरणी में मान सम्मिलित करने के लिए, JSON_ARRAY_INSERT() . का उपयोग करें इसके बजाय कार्य करें।

इसके अलावा, हालांकि हम उपरोक्त उदाहरण में एक सरणी के लिए एक मान जोड़ने में सक्षम थे, आप शायद JSON_ARRAY_APPEND() का उपयोग करना बेहतर समझते हैं। फ़ंक्शन, क्योंकि यह विशेष रूप से उस उद्देश्य के लिए डिज़ाइन किया गया है।

नेस्टेड ऑब्जेक्ट

किसी अन्य ऑब्जेक्ट के अंदर नेस्टेड ऑब्जेक्ट में मान डालने का एक उदाहरण यहां दिया गया है:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog"
            }
        }
    }
';
SELECT JSON_INSERT(
    @json_document, 
    '$.details.awards.Sumo 2020',
    'Biggest Dog'
    );

परिणाम:

{"_id": 1, "name": "Wag", "details": {"type": "Dog", "weight": 20, "awards": {"Florida Dog Awards": "Top Dog", "New York Marathon": "Fastest Dog", "Sumo 2020": "Biggest Dog"}}}

परिणाम को सुंदर बनाएं

हम JSON_DETAILED() . का उपयोग कर सकते हैं परिणाम को पढ़ने में आसान बनाने के लिए कार्य करें:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog"
            }
        }
    }
';
SELECT 
    JSON_DETAILED(
        JSON_INSERT(
            @json_document, 
            '$.details.awards.Sumo 2020',
            'Biggest Dog'
        )
    );

परिणाम:

{
    "_id": 1,
    "name": "Wag",
    "details": 
    {
        "type": "Dog",
        "weight": 20,
        "awards": 
        {
            "Florida Dog Awards": "Top Dog",
            "New York Marathon": "Fastest Dog",
            "Sumo 2020": "Biggest Dog"
        }
    }
}

अशक्त तर्क

अगर json_document में से कोई एक या path तर्क हैं NULL , परिणाम NULL . है :

SELECT 
    JSON_INSERT(null, '$.type', 'Dog'),
    JSON_INSERT('{"a":1}', null, 'Dog');

परिणाम:

+------------------------------------+-------------------------------------+
| JSON_INSERT(null, '$.type', 'Dog') | JSON_INSERT('{"a":1}', null, 'Dog') |
+------------------------------------+-------------------------------------+
| NULL                               | NULL                                |
+------------------------------------+-------------------------------------+

हालांकि, अगर value तर्क NULL है , कुंजी को निर्दिष्ट पथ पर null . के मान के साथ जोड़ा जाता है :

SELECT JSON_INSERT('{"a":1}', '$.type', null);

परिणाम:

+----------------------------------------+
| JSON_INSERT('{"a":1}', '$.type', null) |
+----------------------------------------+
| {"a": 1, "type": null}                 |
+----------------------------------------+

गलत पैरामीटर गणना

तर्क न देने से त्रुटि होती है:

SELECT JSON_INSERT();

परिणाम:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_INSERT'

जब आप बहुत कम या बहुत अधिक तर्क देते हैं तो ऐसा ही होता है:

SELECT JSON_INSERT('{ "a": 1}');

परिणाम:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_INSERT'

समान कार्य

JSON_REPLACE() फ़ंक्शन मौजूदा डेटा को अपडेट कर सकता है।

JSON_SET() फ़ंक्शन मौजूदा डेटा को अपडेट कर सकता है और नया डेटा सम्मिलित कर सकता है। तो JSON_SET() JSON_INSERT() जैसा है और JSON_REPLACE() एक समारोह में।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे MATCH AGAINST MariaDB . में काम करता है

  2. TO_CHAR () का परिचय देने के लिए मारियाडीबी

  3. मारियाडीबी में SYSDATE () और अब () के बीच अंतर

  4. MySQL में लॉक वेट टाइमआउट से अधिक त्रुटि को कैसे ठीक करें

  5. कैसे MID () मारियाडीबी में काम करता है