SQLite संस्करण 3.38.0 (22 फरवरी 2022 को जारी) से शुरू होकर, अब हम ->
का उपयोग कर सकते हैं और ->>
JSON दस्तावेज़ों के उप-घटकों को निकालने के लिए ऑपरेटर।
इन ऑपरेटरों का उद्देश्य समकक्ष MySQL और PostgreSQL ऑपरेटरों के साथ संगत होना है।
साथ ही, SQLite 3.38.0 से शुरू होकर, JSON फ़ंक्शन अब बिल्ट-इन हैं। इसलिए, अब -DSQLITE_ENABLE_JSON1
का उपयोग करना आवश्यक नहीं है JSON समर्थन को सक्षम करने के लिए संकलन-समय विकल्प।
सिंटैक्स
इन ऑपरेटरों के काम करने का तरीका इस प्रकार है:
json -> path
json ->> path
जहां json
JSON दस्तावेज़ है और path
वह पथ है जिसे हम इससे निकालना चाहते हैं।
इसलिए हम ऑपरेटर के बाईं ओर एक JSON दस्तावेज़ प्रदान करते हैं, और हम उस पथ को निर्दिष्ट करते हैं जिसे हम इसके दाईं ओर निकालना चाहते हैं।
इन ऑपरेटरों के बीच का अंतर इस प्रकार है:
- द
->
ऑपरेटर हमेशा निर्दिष्ट उप-घटक का JSON प्रतिनिधित्व देता है - द
->>
ऑपरेटर हमेशा निर्दिष्ट उप-घटक का SQL प्रतिनिधित्व देता है
->
का उदाहरण संचालिका
यह प्रदर्शित करने के लिए यहां एक सरल उदाहरण दिया गया है कि कैसे ->
ऑपरेटर काम करता है:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$';
परिणाम:
{"name":"Wag","type":"Dog"}
इस मामले में, मैंने '$'
. का पथ निर्दिष्ट किया है जो पूरे दस्तावेज़ को लौटा देता है।
आइए एक और पथ निर्दिष्ट करें:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$.type';
परिणाम:
"Dog"
हम इसे इस तरह भी कर सकते हैं:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> 'type';
परिणाम:
"Dog"
->>
का उदाहरण संचालिका
यहां बताया गया है कि जब हम ->>
. का उपयोग करते हैं तो क्या होता है इसके बजाय:
SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.type';
परिणाम:
Dog
मान को पहले की तरह उद्धृत नहीं किया गया है। ऐसा इसलिए है क्योंकि ->
उप-घटक का JSON प्रतिनिधित्व देता है और ->>
एक SQL प्रतिनिधित्व देता है।
->>
ऑपरेटर एक SQL पाठ, पूर्णांक, वास्तविक, या NULL मान देता है जो चयनित उप-घटक का प्रतिनिधित्व करता है, या NULL यदि उप-घटक मौजूद नहीं है।
यहां एक सरणी के साथ एक उदाहरण दिया गया है:
SELECT '{ "scores" : [ 9, 7, 5 ] }' ->> '$.scores[2]';
परिणाम:
5
यदि मान में केवल एक सरणी है, तो हम यह कर सकते हैं:
SELECT '[ 9, 7, 5 ]' ->> '2';
परिणाम:
5
यह निर्दिष्ट सूचकांक पर सरणी तत्व देता है (इस मामले में 2)।
सरणियाँ शून्य आधारित हैं (गिनती 0
से शुरू होती है ), और इसीलिए 2
तीसरा आइटम लौटाता है।