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

SQLite में JSON दस्तावेज़ से मान निकालने के 3 तरीके

SQLite का उपयोग करते समय, हम JSON दस्तावेज़ से डेटा निकालने के लिए निम्न विधियों का उपयोग कर सकते हैं।

json_extract() समारोह

जैसा कि इसके नाम से पता चलता है, json_extract() फ़ंक्शन अच्छी तरह से बनाए गए JSON से एक या अधिक मान निकालता है और लौटाता है।

उदाहरण:

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

परिणाम:

{"name":"Bark","scores":[3,4,8,7]}

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

हम अपने पथ में जोड़कर सरणी में उस स्थिति में केवल कुत्ते का नाम वापस कर सकते हैं:

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

परिणाम:

Bark

हम उपयोग कर सकते हैं json_extract() अनेक पथ लौटाने के लिए:

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

परिणाम:

["Wag","Bark","Woof"]

जब हम कई रास्तों से मान निकालते हैं, तो मान एक सरणी में वापस आ जाते हैं।

-> संचालिका

-> ऑपरेटर एक JSON दस्तावेज़ से एक उप-घटक निकालता है और उस उप-घटक का JSON प्रतिनिधित्व देता है।

इसलिए, हम पहले उदाहरण को इसमें बदल सकते हैं:

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

परिणाम:

{"name":"Bark","scores":[3,4,8,7]}

-> ऑपरेटर json_extract() . से सूक्ष्म रूप से भिन्न है समारोह:

  • -> ऑपरेटर हमेशा उप-घटक का JSON प्रतिनिधित्व देता है।
  • json_extract() फ़ंक्शन केवल JSON देता है यदि दो या अधिक पथ तर्क हैं (क्योंकि परिणाम तब एक JSON सरणी है) या यदि एकल पथ तर्क किसी सरणी या ऑब्जेक्ट को संदर्भित करता है।
  • यदि केवल एक पथ तर्क है और वह पथ JSON नल या स्ट्रिंग या संख्यात्मक मान को संदर्भित करता है, तो json_extract() संबंधित SQL NULL, TEXT, INTEGER, या REAL मान लौटाता है।

इसलिए, जब हम अपने JSON से कुत्ते का नाम निकालते हैं, तो यहां क्या होता है:

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

परिणाम:

"Bark"

इस बार यह उद्धरणों से घिरा हुआ है। ऐसा इसलिए है क्योंकि यह मान का JSON प्रतिनिधित्व लौटाता है। जब हमने json_extract() . के साथ समान मान निकाला पहले, हमें मान का SQL प्रतिनिधित्व मिला था।

हालाँकि, हम ->> . का भी उपयोग कर सकते हैं एक SQL प्रतिनिधित्व वापस करने के लिए ऑपरेटर।

->> संचालिका

->> ऑपरेटर उसी तरह काम करता है जैसे -> ऑपरेटर, सिवाय इसके कि ->> निर्दिष्ट उपघटक का SQL प्रतिनिधित्व देता है। विशेष रूप से, यह एक SQL TEXT देता है , INTEGER , REAL , या NULL मान जो चयनित उपघटक का प्रतिनिधित्व करता है, या NULL यदि उपघटक मौजूद नहीं है।

इसलिए, यहाँ क्या होता है जब हम ->> . का उपयोग करते हैं कुत्ते का नाम निकालने के लिए ऑपरेटर:

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

परिणाम:

Bark

यह अब उद्धरणों में संलग्न नहीं है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite UNIXEPOCH () फ़ंक्शन का परिचय देता है

  2. एक SQLite डेटाबेस क्लोन करें

  3. SQLite - संबंध बनाएं

  4. एंड्रॉइड ऐप में यूजरनेम और पासवर्ड स्टोर करने का सबसे अच्छा विकल्प

  5. SQLite आदेश द्वारा