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

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

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

यह 1 returns लौटाता है यदि दस्तावेज़ में निर्दिष्ट पथ पर डेटा है, 0 अगर ऐसा नहीं होता है, और NULL यदि कोई तर्क NULL है ।

सिंटैक्स

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

JSON_CONTAINS_PATH(json_doc, return_arg, path[, path] ...)

जहां json_doc JSON दस्तावेज़ है और path उस पथ को निर्दिष्ट करता है जिसके लिए डेटा खोजना है। एकाधिक पथ प्रदान किए जा सकते हैं।

return_arg तर्क निर्धारित करता है कि एकाधिक पथों से कैसे निपटें। यह oneहो सकता है या all

  • one - फ़ंक्शन 1 लौटाता है यदि JSON दस्तावेज़ में कम से कम एक पथ मौजूद है।
  • all - फ़ंक्शन 1 लौटाता है केवल तभी जब सभी पथ JSON दस्तावेज़ में मौजूद हों।

उदाहरण

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

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS_PATH(@json_document, 'one', '$.name');

परिणाम:

+-----------------------------------------------------+
| JSON_CONTAINS_PATH(@json_document, 'one', '$.name') |
+-----------------------------------------------------+
|                                                   1 |
+-----------------------------------------------------+

इस मामले में, पथ मौजूद है, और परिणाम 1 . है ।

अगले उदाहरण में पथ मौजूद नहीं है, और परिणाम 0 . है :

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS_PATH(@json_document, 'one', '$.type');

परिणाम:

+-----------------------------------------------------+
| JSON_CONTAINS_PATH(@json_document, 'one', '$.type') |
+-----------------------------------------------------+
|                                                   0 |
+-----------------------------------------------------+

एकाधिक पथ

यहां कुछ उदाहरण दिए गए हैं जो दस्तावेज़ में कई पथ खोजते हैं:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS_PATH(
        @json_document, 
        'one', 
        '$.type', 
        '$.weight'
        ) AS Result;

परिणाम:

+--------+
| Result |
+--------+
|      1 |
+--------+

इस उदाहरण में हमने दो रास्तों की खोज की। एक पथ मौजूद है और दूसरा नहीं है। लेकिन हमें एक 1 मिला है वैसे भी (एक सकारात्मक परिणाम)। ऐसा इसलिए है क्योंकि हमने one . का उपयोग किया है दूसरे तर्क के रूप में। one निर्दिष्ट करता है कि हमें एक 1 मिलेगा यदि कोई पथ मौजूद है।

यदि हम all का उपयोग करते हैं तो यहां बताया गया है कि क्या होता है दूसरे तर्क के रूप में:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS_PATH(
    @json_document, 
    'all', 
    '$.type', 
    '$.weight'
    ) AS Result;

परिणाम:

+--------+
| Result |
+--------+
|      0 |
+--------+

इस बार परिणाम 0 . है , क्योंकि JSON दस्तावेज़ में सभी पथ मौजूद नहीं हैं।

यदि हम गुम पथ को बदलते हैं ($.type ) जो मौजूद है, हमें एक अलग परिणाम मिलता है:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS_PATH(
    @json_document, 
    'all', 
    '$.name', 
    '$.weight'
    ) AS Result;

परिणाम:

+--------+
| Result |
+--------+
|      1 |
+--------+

सरणी

यहां एक उदाहरण दिया गया है जो यह जांचता है कि क्या दी गई अनुक्रमणिका किसी सरणी में मौजूद है:

SET @json_document = '
    { 
        "name": "Wag", 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';

SELECT JSON_CONTAINS_PATH(
        @json_document, 
        'one', 
        '$.awards[2]'
        ) AS Result;

परिणाम:

+--------+
| Result |
+--------+
|      1 |
+--------+

और अगर हम इंडेक्स को गैर-मौजूद में बढ़ाते हैं तो क्या होता है:

SET @json_document = '
    { 
        "name": "Wag", 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';

SELECT JSON_CONTAINS_PATH(
        @json_document, 
        'one', 
        '$.awards[3]'
        ) AS Result;

परिणाम:

+--------+
| Result |
+--------+
|      0 |
+--------+

नेस्टेड संरचनाएं

यहां एक उदाहरण दिया गया है जो नेस्टेड दस्तावेज़ में पथ ढूंढता है:

SET @json_document = '
    { 
        "name": "Wag", 
        "specs": { 
            "weight": 10, 
            "height": 30 
            } 
    }
';

SELECT JSON_CONTAINS_PATH(
    @json_document, 
    'one', 
    '$.specs.height'
    ) AS Result;

परिणाम:

+--------+
| Result |
+--------+
|      1 |
+--------+

अशक्त तर्क

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

SET @json_document = '{ "name": "Wag", "weight": 10 }';
SELECT 
    JSON_CONTAINS_PATH(null, 'one', '$.weight') AS a,
    JSON_CONTAINS_PATH(@json_document, null, '$.weight') AS b,
    JSON_CONTAINS_PATH(@json_document, 'one', null) AS c;

परिणाम:

+------+------+------+
| a    | b    | c    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

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

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

SELECT JSON_CONTAINS_PATH();

परिणाम:

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

जब आप पर्याप्त तर्क नहीं देते हैं तो ऐसा ही होता है:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS_PATH(@json_document);

परिणाम:

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

  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. मारियाडीबी स्काईएसक्यूएल में क्षमताओं और विशेषताओं को जानना

  3. मारियाडीबी TX क्या है? न्यू मारियाडीबी माईएसक्यूएल फोर्क को कैसे प्रबंधित करें!

  4. MySQL या MariaDB गैलेरा क्लस्टर में प्रतिकृति प्रदर्शन में सुधार कैसे करें

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