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

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

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

यह 1 returns लौटाता है यदि इसमें मान शामिल है, 0 अगर ऐसा नहीं होता है, और NULL यदि कोई तर्क NULL है ।

सिंटैक्स

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

JSON_CONTAINS(json_doc, val[, path])

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

उदाहरण

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

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

SELECT JSON_CONTAINS(@json_document, '{"name": "Wag"}');

परिणाम:

+--------------------------------------------------+
| JSON_CONTAINS(@json_document, '{"name": "Wag"}') |
+--------------------------------------------------+
|                                                1 |
+--------------------------------------------------+

इस मामले में, एक मैच था, और परिणाम 1 . है ।

अगले उदाहरण में, कोई मेल नहीं है:

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

SELECT JSON_CONTAINS(@json_document, '{"name": "Woof"}');

परिणाम:

+---------------------------------------------------+
| JSON_CONTAINS(@json_document, '{"name": "Woof"}') |
+---------------------------------------------------+
|                                                 0 |
+---------------------------------------------------+

ध्यान दें कि मान घुंघराले ब्रेसिज़ में संलग्न है।

यहाँ क्या होता है जब दूसरा तर्क मान्य नहीं होता है:

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

SELECT JSON_CONTAINS(@json_document, 'Wag');

परिणाम:

+--------------------------------------+
| JSON_CONTAINS(@json_document, 'Wag') |
+--------------------------------------+
|                                 NULL |
+--------------------------------------+
1 row in set, 1 warning (0.000 sec)

आइए देखें चेतावनी:

SHOW WARNINGS;

परिणाम:

+---------+------+-----------------------------------------------------------------------------------+
| Level   | Code | Message                                                                           |
+---------+------+-----------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 2 to function 'json_contains' at position 1 |
+---------+------+-----------------------------------------------------------------------------------+

पथ निर्दिष्ट करें

पथ निर्दिष्ट करने के लिए आप वैकल्पिक रूप से तीसरे तर्क का उपयोग कर सकते हैं।

उदाहरण:

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

SELECT JSON_CONTAINS(@json_document, 10, '$.weight');

परिणाम:

+-----------------------------------------------+
| JSON_CONTAINS(@json_document, 10, '$.weight') |
+-----------------------------------------------+
|                                             1 |
+-----------------------------------------------+

पथ निर्दिष्ट करते समय, मुझे घुंघराले ब्रेसिज़ का उपयोग करने की आवश्यकता नहीं थी।

यहाँ एक स्ट्रिंग की खोज कर रहा है:

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

SELECT JSON_CONTAINS(@json_document, '"Wag"', '$.name');

परिणाम:

+--------------------------------------------------+
| JSON_CONTAINS(@json_document, '"Wag"', '$.name') |
+--------------------------------------------------+
|                                                1 |
+--------------------------------------------------+

ध्यान दें कि मैंने सिंगल कोट्स के अंदर डबल कोट्स का इस्तेमाल किया है। अगर मैं दोहरे उद्धरण चिह्नों को छोड़ देता हूं, तो यहां क्या होता है:

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

SELECT JSON_CONTAINS(@json_document, 'Wag', '$.name');

परिणाम:

+------------------------------------------------+
| JSON_CONTAINS(@json_document, 'Wag', '$.name') |
+------------------------------------------------+
|                                           NULL |
+------------------------------------------------+
1 row in set, 1 warning (0.000 sec)

और आइए चेतावनी देखें:

SHOW WARNINGS;

परिणाम:

+---------+------+-----------------------------------------------------------------------------------+
| Level   | Code | Message                                                                           |
+---------+------+-----------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 2 to function 'json_contains' at position 1 |
+---------+------+-----------------------------------------------------------------------------------+

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

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

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

SELECT JSON_CONTAINS(@json_document, 30, '$.specs.height');

परिणाम:

+-----------------------------------------------------+
| JSON_CONTAINS(@json_document, 30, '$.specs.height') |
+-----------------------------------------------------+
|                                                   1 |
+-----------------------------------------------------+

अशक्त तर्क

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

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

परिणाम:

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

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

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

SELECT JSON_CONTAINS();

परिणाम:

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

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

SELECT JSON_CONTAINS('{ "a": 1}', 1, 2, 3);

परिणाम:

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

  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. मारियाडीबी में कॉलम के डेटा प्रकार की जांच करने के 4 तरीके

  3. मैक पर मारियाडीबी स्थापित करें

  4. मारियाडीबी में सबटाइम () कैसे काम करता है?

  5. मारियाडीबी में डीआईवी कैसे काम करता है