SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite JSON_ARRAY_LENGTH ()

SQLite में, json_array_length() फ़ंक्शन किसी दिए गए JSON सरणी में तत्वों की संख्या देता है।

सरणी एक तर्क के रूप में प्रदान की जाती है। यदि सरणी एक बड़े JSON दस्तावेज़ में एम्बेड की गई है, तो हम सरणी के पथ को निर्दिष्ट करने के लिए वैकल्पिक दूसरे तर्क का उपयोग कर सकते हैं।

यदि मान एक सरणी नहीं है, तो फ़ंक्शन 0 लौटाता है ।

सिंटैक्स

फ़ंक्शन का उपयोग निम्नलिखित दो तरीकों से किया जा सकता है:

json_array_length(X)
json_array_length(X,P)

जहां X सरणी का प्रतिनिधित्व करता है और P एक वैकल्पिक पथ है जिसका उपयोग किसी बड़े दस्तावेज़ में सरणी के पथ को निर्दिष्ट करने के लिए किया जा सकता है।

उदाहरण

प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है:

SELECT json_array_length('[ 7, 12, 10 ]');

परिणाम:

3

सरणी में तीन तत्व होते हैं और इसलिए 3 लौटा दिया गया है।

पथ निर्दिष्ट करें

हम सरणी के पथ को निर्दिष्ट करने के लिए दूसरे तर्क का भी उपयोग कर सकते हैं:

SELECT json_array_length('[ 7, 12, 10 ]', '$');

परिणाम:

3

इस मामले में सरणी शीर्ष स्तर पर है, और इसलिए हम $ . पास करते हैं पथ के रूप में।

निम्न उदाहरण एक बड़े दस्तावेज़ में एम्बेड की गई सरणी का उपयोग करता है:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs'
);

परिणाम:

3

इस मामले में, dogs . पर सरणी इसमें तीन तत्व होते हैं।

हम अगले स्तर तक नेविगेट कर सकते हैं और अन्य सरणियों में से एक में तत्वों की संख्या का पता लगा सकते हैं:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].scores'
);

परिणाम:

4

सरणी शून्य आधारित हैं, और इसलिए गिनती 0 . से शुरू होती है . इसलिए, हमने [1] . निर्दिष्ट किया है dogs . के भीतर दूसरा तत्व प्राप्त करने के लिए सरणी, जो एक JSON ऑब्जेक्ट होता है। फिर हम .scores . का उपयोग करते हैं इसकी सरणी चुनने के लिए।

गैर-सरणी का चयन करना

यदि पथ JSON सरणी के अलावा किसी अन्य मान को इंगित करता है, 0 लौटा दिया गया है:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].name'
);

परिणाम:

0

एक गैर-मौजूद पथ का चयन करना

यदि दूसरा तर्क उस पथ को इंगित करता है जो मौजूद नहीं है, null लौटा दिया गया है।

सबसे पहले, .nullvalue सेट करते हैं करने के लिए null :

.nullvalue NULL

.nullvalue डॉट कमांड हमें एक स्ट्रिंग प्रदान करने की अनुमति देता है जिसका उपयोग शून्य मानों को बदलने के लिए किया जाएगा। यह कई तरीकों में से एक है जिससे आप SQLite में एक स्ट्रिंग के साथ अशक्त मानों को बदल सकते हैं। इस मामले में, मैंने इसे NULL . पर सेट किया है . अब, कोई भी शून्य मान NULL लौटाएगा रिक्त परिणाम के बजाय।

अब json_array_length() पर कॉल करते हैं , लेकिन एक दूसरे तर्क का उपयोग करें जो एक गैर-मौजूद पथ की ओर इशारा करता है:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.cats'
);

परिणाम:

NULL

अमान्य पथ

यदि हमारा पथ ठीक से नहीं बना है तो हमें एक त्रुटि मिलेगी:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'dogs'
);

परिणाम:

Runtime error: JSON path error near 'dogs'

इस मामले में, मैं $. . शामिल करना भूल गया रास्ते के सामने।

अमान्य JSON दस्तावेज़

हमें एक त्रुटि भी मिलेगी जो JSON अच्छी तरह से गठित नहीं है:

SELECT json_array_length('{ "Dogs" : }', 
'$'
);

परिणाम:

Runtime error: malformed JSON

इस बार त्रुटि हमें बताती है कि हमारा JSON विकृत है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे last_insert_rowid () SQLite में काम करता है

  2. कर्सर डेटा को एक सरणी में रखना

  3. ListView सही छवियों को नहीं दिखाता है जो कि sqlite में उनके नाम के अनुसार आकर्षित करने योग्य हैं

  4. Android में SQLiteOpenHelper के साथ संलग्न sqlite डेटाबेस

  5. स्ट्रिंग का उद्देश्य क्या है [] जहां इंट डिलीट में आर्ग (स्ट्रिंग टेबल, स्ट्रिंग जहां क्लॉज, स्ट्रिंग [] जहां एआरजीएस) फ़ंक्शन?