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

JSON_INSERT () बनाम JSON_SET () बनाम JSON_REPLACE () SQLite में

SQLite JSON दस्तावेज़ में मान डालने, सेट करने और बदलने के लिए कई कार्य प्रदान करता है। विशेष रूप से, यह json_insert() . प्रदान करता है , json_set() , और json_replace()

ये फ़ंक्शन समान कार्य करते हैं, और आप कभी-कभी उन्हें एक निश्चित बिंदु पर एक दूसरे के स्थान पर उपयोग कर सकते हैं।

लेकिन प्रत्येक फ़ंक्शन के बीच निश्चित रूप से एक स्पष्ट अंतर है।

अंतर

निम्न तालिका इन कार्यों के बीच अंतर को रेखांकित करती है:

कार्य ओवरराइट करें यदि पहले से मौजूद है? बनाएं अगर मौजूद नहीं है?
json_insert() नहीं हां
json_replace() हां नहीं
json_set() हां हां

तो इन कार्यों के बीच का अंतर यह है कि वे मौजूदा और गैर-मौजूद कुंजियों/मानों से कैसे निपटते हैं।

उदाहरण

यह दिखाने के लिए यहां कुछ सरल उदाहरण दिए गए हैं कि प्रत्येक फ़ंक्शन मौजूदा और गैर-मौजूद कुंजियों/मानों से कैसे निपटता है।

जब कुंजी पहले से मौजूद हो

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

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

परिणाम:

+-------------+--------------+----------+
| json_insert | json_replace | json_set |
+-------------+--------------+----------+
| {"a":1}     | {"a":2}      | {"a":2}  |
+-------------+--------------+----------+

हम देख सकते हैं कि json_insert() कुछ भी अपडेट नहीं किया, लेकिन अन्य दो कार्यों ने किया।

यह सरणियों के साथ भी ऐसा ही है:

SELECT 
    json_insert('[ 1, 2, 3 ]', '$[1]', 4) AS json_insert,
    json_replace('[ 1, 2, 3 ]', '$[1]', 4) AS json_replace,
    json_set('[ 1, 2, 3 ]', '$[1]', 4) AS json_set;

परिणाम:

+-------------+--------------+----------+
| json_insert | json_replace | json_set |
+-------------+--------------+----------+
| [1,2,3]     | [1,4,3]      | [1,4,3]  |
+-------------+--------------+----------+

जब कुंजी मौजूद न हो

यहां बताया गया है कि जब कुंजी मौजूद नहीं होती है तो क्या होता है:

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

परिणाम:

+---------------+--------------+---------------+
|  json_insert  | json_replace |   json_set    |
+---------------+--------------+---------------+
| {"a":1,"b":2} | {"a":1}      | {"a":1,"b":2} |
+---------------+--------------+---------------+

हम देख सकते हैं कि json_replace() नई कुंजी/मान जोड़ी नहीं डाली, लेकिन अन्य दो कार्यों ने किया।

सरणियों के साथ एक ही सौदा:

SELECT 
    json_insert('[ 1, 2, 3 ]', '$[3]', 4) AS json_insert,
    json_replace('[ 1, 2, 3 ]', '$[3]', 4) AS json_replace,
    json_set('[ 1, 2, 3 ]', '$[3]', 4) AS json_set;

परिणाम:

+-------------+--------------+-----------+
| json_insert | json_replace | json_set  |
+-------------+--------------+-----------+
| [1,2,3,4]   | [1,2,3]      | [1,2,3,4] |
+-------------+--------------+-----------+

यह [#] . का उपयोग करके भी किया जा सकता है पथ:

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

परिणाम:

+-------------+--------------+-----------+
| json_insert | json_replace | json_set  |
+-------------+--------------+-----------+
| [1,2,3,4]   | [1,2,3]      | [1,2,3,4] |
+-------------+--------------+-----------+

[#] . का उपयोग करने का एक लाभ यह है कि आपको यह जानने की जरूरत नहीं है कि सरणी में पहले से ही कितने तत्व हैं।


  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 JSON_TREE ()

  2. SQLite में विदेशी कुंजी की सूची लौटाएं

  3. कैसे जूलियनडे () फ़ंक्शन SQLite में काम करता है

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

  5. एंड्रॉइड स्टूडियो 3.0 कैनरी 1:SQL सिंटैक्स त्रुटि