मारियाडीबी में, JSON_ARRAY_INSERT() एक अंतर्निहित फ़ंक्शन है जो JSON दस्तावेज़ में एक मान सम्मिलित करता है और परिणाम देता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
जहां json_doc JSON दस्तावेज़ है, path वह पथ है जहाँ आप मान/मूल्य सम्मिलित करना चाहते हैं, और value डालने का मूल्य है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); परिणाम:
+-------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
+-------------------------------------------+
| [0, 3, 1, 2] |
+-------------------------------------------+
इस मामले में, मान 3 सरणी में स्थिति 1 . पर डाला गया था . सरणी शून्य आधारित हैं, इसलिए यह सरणी में दूसरा तत्व बन जाता है।
एकाधिक मान डालें
आप JSON_ARRAY_INSERT() में एक ही कॉल में कई मान सम्मिलित कर सकते हैं .
उदाहरण:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); परिणाम:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
+------------------------------------------------------+
| [4, 0, 5, 1, 2] |
+------------------------------------------------------+ मूल्यांकन बाएं से दाएं किया जाता है।
अगर हम path स्विच करते हैं तो यहां क्या होता है? /value चारों ओर तर्क:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); परिणाम:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
+------------------------------------------------------+
| [4, 0, 1, 5, 2] |
+------------------------------------------------------+ एकाधिक सरणी
आप JSON_ARRAY_INSERT() पर एक ही कॉल में एक से अधिक सरणी में मान सम्मिलित कर सकते हैं ।
उदाहरण:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); परिणाम:
+--------------------------------------------------------+
| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |
+--------------------------------------------------------+
| {"a": [0, 4, 1], "b": [2, 3, 5]} |
+--------------------------------------------------------+ नेस्टेड सरणी
नेस्टेड सरणी में मान डालने का एक उदाहरण यहां दिया गया है:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); परिणाम:
+--------------------------------------------+ | JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) | +--------------------------------------------+ | [0, 1, [2, 4, 3]] | +--------------------------------------------+
बड़ा JSON दस्तावेज़
थोड़ा बड़ा JSON दस्तावेज़ वाला एक उदाहरण यहां दिया गया है।
मैं JSON_DETAILED() का भी उपयोग करता हूं परिणाम को सुंदर बनाने के लिए:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
); परिणाम:
{
"pet":
{
"name": "Fluffy",
"diet":
[
"Fish",
"Chicken",
"Water"
]
}
} अशक्त तर्क
यदि पहला तर्क NULL है , परिणाम NULL . है :
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); परिणाम:
+------------------------------------+ | JSON_ARRAY_INSERT(null, '$[1]', 4) | +------------------------------------+ | NULL | +------------------------------------+
वही path . पर लागू होता है तर्क:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); परिणाम:
+--------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
हालांकि, अगर value तर्क NULL है , फिर NULL सरणी में डाला गया है:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); परिणाम:
+----------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
+----------------------------------------------+
| [0, null, 1, 2] |
+----------------------------------------------+
आप JSON_ARRAY_APPEND() का भी उपयोग कर सकते हैं किसी सरणी में मान जोड़ने के लिए।