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