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

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

मारियाडीबी में, JSON_QUERY() एक अंतर्निहित फ़ंक्शन है जो प्रदान किए गए पथ के आधार पर किसी JSON दस्तावेज़ से ऑब्जेक्ट या सरणी देता है।

यह JSON_VALUE() के समान है फ़ंक्शन, सिवाय इसके कि यह एक अदिश के बजाय एक वस्तु या सरणी देता है (JSON_VALUE() एक अदिश देता है)।

सिंटैक्स

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

JSON_QUERY(json_doc, path)

जहां json_doc JSON दस्तावेज़ है, और path दस्तावेज़ के भीतर एक पथ है।

उदाहरण

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

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

परिणाम:

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

हम अगले नेस्टेड ऑब्जेक्ट पर जाने के लिए डॉट नोटेशन का उपयोग कर सकते हैं:

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

परिणाम:

{ 
    "Florida Dog Awards" : "Top Dog", 
    "New York Marathon" : "Fastest Dog", 
    "Sumo 2020" : "Biggest Dog"
}

सरणी

यहां एक सरणी वापस करने का एक उदाहरण दिया गया है:

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

परिणाम:

+------------------------------------------+
| JSON_QUERY(@json_document, '$.awards')   |
+------------------------------------------+
| [ "Top Dog", "Best Dog", "Biggest Dog" ] |
+------------------------------------------+

यदि आप एक वास्तविक सरणी तत्व वापस करना चाहते हैं, तो JSON_VALUE() आज़माएं समारोह।

गैर-मौजूद पथ

ऐसे पथ को पास करने से जो JSON दस्तावेज़ में मौजूद नहीं है NULL . में परिणाम देता है ।

उदाहरण:

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

परिणाम:

+--------------------------------------+
| JSON_QUERY(@json_document, '$.type') |
+--------------------------------------+
| NULL                                 |
+--------------------------------------+

स्केलर मान

एक अदिश मान लौटाने का प्रयास NULL

उदाहरण:

SELECT JSON_QUERY('{ "weight": 10 }', '$.weight');

परिणाम:

+--------------------------------------------+
| JSON_QUERY('{ "weight": 10 }', '$.weight') |
+--------------------------------------------+
| NULL                                       |
+--------------------------------------------+

एक अदिश मान वापस करने के लिए, JSON_VALUE() . का उपयोग करें समारोह।

अशक्त तर्क

अगर कोई तर्क NULL है , परिणाम NULL . है :

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

परिणाम:

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

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

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

SELECT JSON_QUERY();

परिणाम:

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

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

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

परिणाम:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे नहीं REGEXP मारियाडीबी में काम करता है

  2. मारियाडीबी और माईएसक्यूएल के लिए क्लाउड डिजास्टर रिकवरी

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

  4. कैसे नहीं RLIKE MariaDB . में काम करता है

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