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

SQLite JSON_INSERT ()

SQLite json_insert() फ़ंक्शन हमें JSON दस्तावेज़ में एक नया मान डालने की अनुमति देता है।

जब हम फ़ंक्शन को कॉल करते हैं, तो हम मूल JSON को पहले तर्क के रूप में पास करते हैं, उसके बाद एक पथ जो निर्दिष्ट करता है कि नया मान कहाँ सम्मिलित करना है, उसके बाद मान सम्मिलित करना है।

यदि आवश्यक हो तो हम एकाधिक कुंजी/मान जोड़े भी सम्मिलित कर सकते हैं।

सिंटैक्स

फ़ंक्शन को इस तरह कहा जाता है:

json_extract(json, path1, value1, path2, value2...)

जहां json मूल JSON का प्रतिनिधित्व करता है, और path1, value1, path2, value2... पथ/मान जोड़े हैं जिनका उपयोग हम JSON दस्तावेज़ में नए मान डालने के लिए कर सकते हैं।

उदाहरण

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

SELECT json_insert('{ "a" : 1 }', '$.b', 2);

परिणाम:

{"a":1,"b":2}

यहां, मैंने एक नया कुंजी/मान युग्म डाला ("b":2 ) JSON दस्तावेज़ में।

हम इस तरह से कई कुंजी/मूल्य जोड़े सम्मिलित कर सकते हैं:

SELECT json_insert('{ "a" : 1 }', '$.b', 2, '$.c', 3 );

परिणाम:

{"a":1,"b":2,"c":3}

जब मैंने json_insert() . को कॉल किया तो मैंने बस अधिक कुंजी/मान तर्क जोड़े ।

कुंजी/मान पहले से मौजूद है?

json_insert() यदि कुंजी पहले से मौजूद है तो फ़ंक्शन मान सम्मिलित नहीं करेगा:

SELECT json_insert('{ "a" : 1 }', '$.a', 2);

परिणाम:

{"a":1}

इस मामले में, कुंजी a JSON में पहले से मौजूद है, और इसलिए उस कुंजी के लिए एक नया मान डालने का प्रयास काम नहीं करता है।

किसी मान को बदलने के लिए, json_replace() का उपयोग करें या json_set()

ऑब्जेक्ट डालें

यहां एक और JSON दस्तावेज़ डालने का एक उदाहरण दिया गया है:

SELECT json_insert('{ "a" : 1 }', '$.b', json('{ "c" : 2 }') );

परिणाम:

{"a":1,"b":{"c":2}}

इस मामले में, मैंने json() . का इस्तेमाल किया JSON स्ट्रिंग के रूप में मेरे तर्क को वापस करने के लिए कार्य करें। जब मैं ऐसा नहीं करता तो क्या होता है:

SELECT json_insert('{ "a" : 1 }', '$.b', '{ "c" : 2 }' );

परिणाम:

{"a":1,"b":"{ \"c\" : 2 }"}

JSON दस्तावेज़ को JSON ऑब्जेक्ट के बजाय टेक्स्ट मान के रूप में डाला जाता है, और इसलिए इसके दोहरे उद्धरण बैकस्लैश से बच जाते हैं।

हालांकि यह काफी उचित है। आखिरकार, हमने सिंगल कोट्स में नया मान संलग्न किया। SQLite को कैसे पता चला कि हम एक स्ट्रिंग या JSON ऑब्जेक्ट सम्मिलित करना चाहते हैं?

और ऐसा नहीं है कि हम केवल उन सिंगल कोट्स को हटा सकते हैं:

SELECT json_insert('{ "a" : 1 }', '$.b', { "c" : 2 } );

परिणाम:

Parse error: unrecognized token: "{"
  SELECT json_insert('{ "a" : 1 }', '$.b', { "c" : 2 } );
                             error here ---^

सिंगल कोट्स या json() . के बिना फ़ंक्शन, जैसे ही यह बाएं घुंघराले ब्रेस का सामना करता है, हमें एक त्रुटि मिलती है।

JSON ऑब्जेक्ट डालने का दूसरा तरीका json_object() . का उपयोग करना है json() . के बजाय फ़ंक्शन समारोह:

SELECT json_insert('{ "a" : 1 }', '$.b', json_object('c', 2) );

परिणाम:

{"a":1,"b":{"c":2}}

एक सरणी सम्मिलित करें

सरणियाँ सम्मिलित करते समय यह एक समान बात है:

SELECT json_insert('{ "a" : 1 }', '$.b', json('[ 2, 3, 4 ]'));

परिणाम:

{"a":1,"b":[2,3,4]}

अगर हम json() . को हटा दें फ़ंक्शन, हमें यह मिलता है:

SELECT json_insert('{ "a" : 1 }', '$.b', '[ 2, 3, 4 ]');

परिणाम:

{"a":1,"b":"[ 2, 3, 4 ]"}

और अगर हम सिंगल कोट्स हटाते हैं, तो हमें एक त्रुटि मिलती है:

SELECT json_insert('{ "a" : 1 }', '$.b', [ 2, 3, 4 ]);

परिणाम:

Parse error: no such column:  2, 3, 4 
  SELECT json_insert('{ "a" : 1 }', '$.b', [ 2, 3, 4 ]);
                             error here ---^

हम वैकल्पिक रूप से json_array() . का उपयोग कर सकते हैं json() . के बजाय फ़ंक्शन . वह फ़ंक्शन आपको इसके तर्कों के आधार पर एक सरणी बनाने की अनुमति देता है:

SELECT json_insert('{ "a" : 1 }', '$.b', json_array( 2, 3, 4 ) );

परिणाम:

{"a":1,"b":[2,3,4]}

किसी सरणी के अंत में मान जोड़ें

हम उपयोग कर सकते हैं json_insert() किसी सरणी के अंत में मान जोड़ने के लिए।

ऐसा करने के लिए, [#] . की एक सरणी अनुक्रमणिका का उपयोग करें :

SELECT json_insert('[ 1, 2, 3 ]', '$[#]', 4 );

परिणाम:

[1,2,3,4]

नेस्टेड सरणियों पर भी यही सिद्धांत लागू होता है:

SELECT json_insert('[ 1, [ "a", "b" ], 3 ]', '$[1][#]', "c" );

परिणाम:

[1,["a","b","c"],3]

अमान्य पथ

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

SELECT json_insert('{ "a" : 1 }', 'b', 2);

परिणाम:

Runtime error: JSON path error near 'b'

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

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

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

SELECT json_insert('{ "a" : 1', '$.b', 2);

परिणाम:

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. डीडी-एमएम-वाई वाई प्रारूप में एसक्लाइट डीबी से दो तिथियों के बीच डेटा का चयन कैसे करें?

  2. SQLite ड्रॉप व्यू

  3. Android SQLite डेटाबेस यूनिट परीक्षण

  4. android.database.sqlite.sqliteconstraintextception त्रुटि कोड डालने में त्रुटि 19 बाधा विफल

  5. SQLite - एक डेटाबेस ड्रॉप करें