MySQL के साथ JSON दस्तावेज़ों का उपयोग करते समय, आप JSON_ARRAY_APPEND()
का उपयोग कर सकते हैं सरणी में नए मान जोड़ने के लिए कार्य करता है।
जिस तरह से यह काम करता है, आप पहले तर्क के रूप में JSON दस्तावेज़ प्रदान करते हैं, फिर उसे जोड़ने के लिए पथ के साथ पालन करें, उसके बाद संलग्न करने के लिए मान।
MySQL 5.7 में, इस फ़ंक्शन को JSON_APPEND()
. कहा जाता था लेकिन वह नाम अब समर्थित नहीं है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)
कहां:
json_doc
JSON दस्तावेज़ है।path
उस तत्व का पथ है जिसके लिए नया मान जोड़ना है।val
नया मान है जिसे जोड़ा जाएगा।
पथ-मान युग्मों का मूल्यांकन बाएँ से दाएँ किया जाता है। एक जोड़ी का मूल्यांकन करके तैयार किया गया दस्तावेज़ नया मान बन जाता है जिसके विरुद्ध अगले जोड़े का मूल्यांकन किया जाता है।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4) AS 'Result';
परिणाम:
+--------------+ | Result | +--------------+ | [1, 2, 3, 4] | +--------------+
तो तीसरा तर्क सरणी में जोड़ा जाता है। इस मामले में, मैं $
. का उपयोग करता हूं पथ के लिए। यह JSON दस्तावेज़ का एक समानार्थी है, इसलिए मान को शीर्ष स्तर के सरणी में जोड़ा जाता है (जो इस मामले में, एकमात्र सरणी होती है)।
उदाहरण 2 - नेस्टेड ऐरे
किसी अन्य सरणी के अंदर नेस्टेड सरणी में मान जोड़ने का एक उदाहरण यहां दिया गया है।
SELECT JSON_ARRAY_APPEND('[1, 2, [3, 4]]', '$[2]', 5) AS 'Result';
परिणाम:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 4, 5]] | +-------------------+
तो यहाँ, मैं उपयोग करता हूँ $[2]
पथ के रूप में। यह तीसरे तत्व पर सरणी निर्दिष्ट करता है (सरणी शून्य-आधारित संख्या का उपयोग करती है, इसलिए गिनती शून्य से शुरू होती है)।
यदि उस तत्व में पहले से कोई सरणी नहीं थी, तो एक नई सरणी बनाई जाती है।
इस तरह:
SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$[2]', 4) AS 'Result';
परिणाम:
+----------------+ | Result | +----------------+ | [1, 2, [3, 4]] | +----------------+
उदाहरण 3 - एक बड़ा JSON दस्तावेज़
यह उदाहरण एक (थोड़ा) बड़ा JSON दस्तावेज़ का उपयोग करता है। यह दर्शाता है कि दस्तावेज़ के भीतर सरणी कहाँ है, इसके आधार पर पथ कैसे बदलता है।
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies', "Base Jumping") AS 'Result';
परिणाम:
+----------------------------------------------------------------------------------+ | Result | +----------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Sleeping", "Base Jumping"]}} | +----------------------------------------------------------------------------------+
और पिछले उदाहरण की तरह, यदि आवश्यक हो, तो हम एक नया, नेस्टेड सरणी भी बना सकते हैं:
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies[0]', "Drinking") AS 'Result';
परिणाम:
+--------------------------------------------------------------------------------+ | Result | +--------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": [["Eating", "Drinking"], "Sleeping"]}} | +--------------------------------------------------------------------------------+