MySQL में, JSON_CONTAINS()
फ़ंक्शन परीक्षण करता है कि दिए गए JSON दस्तावेज़ में या वैकल्पिक रूप से, दस्तावेज़ के भीतर निर्दिष्ट पथ पर कोई निर्दिष्ट मान मिलता है या नहीं।
अगर मान मिलता है, JSON_CONTAINS()
रिटर्न 1
, अन्यथा यह वापस आ जाता है 0
।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_CONTAINS(target, candidate[, path])
फ़ंक्शन 1
लौटाता है या 0
इस पर निर्भर करता है कि दिया गया candidate
JSON दस्तावेज़ एक target
. में समाहित है JSON दस्तावेज़, या—यदि एक path
तर्क दिया गया था—क्या उम्मीदवार लक्ष्य के भीतर एक विशिष्ट पथ पर पाया जाता है।
उदाहरण 1 - दो तर्क
पथ निर्दिष्ट किए बिना मूल उपयोग प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है (यानी केवल दो तर्क प्रदान करना)।
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}'; SET @doc2 = '{"c": {"d": 3}}'; SELECT JSON_CONTAINS(@doc1, @doc2) AS Result;
परिणाम:
+--------+ | Result | +--------+ | 1 | +--------+
दूसरे तर्क के चारों ओर घुंघराले ब्रेसिज़ पर ध्यान दें। इसे वैध JSON बनाने के लिए ये आवश्यक हैं। अगर हम घुंघराले ब्रेसिज़ को छोड़ देते हैं, तो हम एक त्रुटि के साथ समाप्त होंगे:
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}'; SET @doc2 = '"c": {"d": 3}'; SELECT JSON_CONTAINS(@doc1, @doc2) AS Result;
परिणाम:
ERROR 3141 (22032): Invalid JSON text in argument 2 to function json_contains: "The document root must not be followed by other values." at position 3.
उदाहरण 2 - तीन तर्क
इस उदाहरण में मैं एक तीसरा तर्क जोड़ता हूं, एक विशिष्ट पथ को इंगित करने के लिए जिसके लिए पहले तर्क में दूसरा तर्क खोजना है।
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}'; SET @doc2 = '1'; SELECT JSON_CONTAINS(@doc1, @doc2, '$.a') AS Result;
परिणाम:
+--------+ | Result | +--------+ | 1 | +--------+
इस मामले में, दूसरा तर्क तीसरे तर्क द्वारा निर्दिष्ट पथ पर पहले तर्क में पाया गया था।
यदि यह नहीं मिला, तो हम इसे समाप्त कर देंगे:
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}'; SET @doc2 = '2'; SELECT JSON_CONTAINS(@doc1, @doc2, '$.a') AS Result;
परिणाम:
+--------+ | Result | +--------+ | 0 | +--------+
उदाहरण 3 - डॉट नोटेशन
आप JSON दस्तावेज़ में विशिष्ट पथ इंगित करने के लिए डॉट-नोटेशन का उपयोग कर सकते हैं।
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}'; SET @doc2 = '3'; SELECT JSON_CONTAINS(@doc1, @doc2, '$.c.d') AS Result;
परिणाम:
+--------+ | Result | +--------+ | 1 | +--------+