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]
चौथे तत्व का प्रतिनिधित्व करता है, लेकिन सरणी में केवल तीन तत्व होते हैं।