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