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

JSON_CONTAINS_PATH () MySQL में उदाहरण

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

अगर पथ मिल जाता है, JSON_CONTAINS_PATH() रिटर्न 1 , अन्यथा यह वापस आ जाता है 0

सिंटैक्स

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

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

जहां json_doc JSON दस्तावेज़ है, one_or_all कीवर्ड है one या all (यह इंगित करने के लिए कि लौटने से पहले केवल एक पथ मौजूद होना चाहिए या सभी पथ मौजूद होने चाहिए 1 ), और path वास्तविक पथ है।

उदाहरण 1 - मूल उपयोग

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

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a') AS Result;

परिणाम:

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

पथ $.a JSON दस्तावेज़ में मौजूद है, और इसलिए, परिणाम 1 . है . हमने one . का इस्तेमाल किया दूसरे तर्क के रूप में लेकिन इस मामले में हमें वही परिणाम मिलेगा यदि हम निर्दिष्ट करते हैं all

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a') AS Result;

परिणाम:

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

यदि हम एक पथ निर्दिष्ट करते हैं जो मौजूद नहीं है तो हमें 0 . मिलता है . उदाहरण:

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.z') AS Result;

परिणाम:

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

उदाहरण 2 - एकाधिक पथ

निम्नलिखित उदाहरणों में हम दो पथ निर्दिष्ट करते हैं।

पहले उदाहरण में, एक पथ मौजूद है लेकिन दूसरा नहीं है। लेकिन क्योंकि मैं one का उपयोग करता हूं दूसरे तर्क के रूप में, परिणाम सकारात्मक है (क्योंकि कम से कम एक पथ मौजूद है)।

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a', '$.z') AS Result;

परिणाम:

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

अगर हम one स्विच करते हैं करने के लिए all हमें एक नकारात्मक परिणाम मिलता है।

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a', '$.z') AS Result;

परिणाम:

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

ऐसा इसलिए है क्योंकि all कीवर्ड के लिए आवश्यक है कि 1 . लौटाने से पहले JSON दस्तावेज़ में सभी पथ मौजूद हों ।

उदाहरण 3 - डॉट नोटेशन

आप JSON दस्तावेज़ में विशिष्ट पथों को इंगित करने के लिए डॉट-नोटेशन का उपयोग कर सकते हैं।

SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c.d') AS Result;

परिणाम:

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

उदाहरण 4 - सरणी

यहां कुछ सरणी उदाहरण दिए गए हैं।

पहला उदाहरण सकारात्मक परिणाम देता है।

SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[0]') AS Result;

परिणाम:

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

अगला उदाहरण एक नकारात्मक परिणाम देता है।

SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[3]') AS Result;

परिणाम:

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

यह ऋणात्मक लौटाता है क्योंकि सरणियाँ शून्य आधारित क्रमांकन का उपयोग करती हैं। इसलिए, पथ $.c[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. CentOS 8 / RHEL 8 . पर MySQL 8.0 कैसे स्थापित करें

  2. पाइप स्थापित mysqlclient घातक त्रुटि देता है C1083:फ़ाइल नहीं खोल सकता:'mysql.h':ऐसी कोई फ़ाइल या निर्देशिका नहीं

  3. SQLAlchemy ORM के साथ बल्क इंसर्ट

  4. MySQL IN खंड में अल्पविराम से अलग किए गए मान

  5. MySQL सीखें - नई प्रौद्योगिकी सप्ताह