SQLite में, json_quote()
फ़ंक्शन किसी संख्या या स्ट्रिंग को उसके संबंधित JSON प्रतिनिधित्व में परिवर्तित करता है।
जब हम फ़ंक्शन को कॉल करते हैं, तो हम तर्क के रूप में संख्या या स्ट्रिंग प्रदान करते हैं, और फ़ंक्शन उस मान का JSON प्रतिनिधित्व देता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
json_quote(X)
जहां X
एक संख्या या स्ट्रिंग है।
उदाहरण
जब हम फ़ंक्शन के लिए एक स्ट्रिंग पास करते हैं तो यहां क्या होता है:
SELECT json_quote('Super');
परिणाम:
"Super"
और ये रहा एक नंबर:
SELECT json_quote(10.45);
परिणाम:
10.45
यहाँ एक स्ट्रिंग है जो एक सरणी की तरह दिखती है:
SELECT json_quote('[10.45]');
परिणाम:
"[10.45]"
यहाँ एक स्ट्रिंग है जो एक वस्तु की तरह दिखती है:
SELECT json_quote('{ "score" : 10.45 }');
परिणाम:
"{ \"score\" : 10.45 }"
लेकिन अगर हम json()
. में तर्क पास करते हैं फ़ंक्शन, हमें यह मिलता है:
SELECT json_quote(json('{ "score" : 10.45 }'));
परिणाम:
{"score":10.45}
शून्य मान
पासिंग null
रिटर्न null
:
SELECT json_quote( null );
परिणाम:
null
यह वास्तव में SQL टेक्स्ट वैल्यू है null
. हम इसे json_type()
. पर पास करके सत्यापित कर सकते हैं समारोह:
SELECT json_type(json_quote( null ));
परिणाम:
null
json_type()
फ़ंक्शन अपने तर्क का SQL टेक्स्ट मान प्रकार देता है। इस मामले में यह null
returned लौटा , जो इंगित करता है कि json_quote()
फ़ंक्शन लौटा null
जब हमने null
. पास किया इसके लिए।
मामले में हमें संदेह है कि हमारा SQLite CLI null
लौटा रहा है वास्तविक शून्य मान लौटाए जाने के कारण, हम इसे रद्द करने के लिए निम्न कार्य कर सकते हैं:
.nullvalue N/A
यह हमारे कमांड लाइन इंटरफेस को N/A
. वापस करने के लिए कहता है जब भी कोई शून्य मान लौटाया जाता है।
उपरोक्त कमांड को चलाने के बाद, पिछले स्टेटमेंट को फिर से चलाएं, साथ ही एक ऑपरेशन जो वास्तव में एक शून्य मान में परिणत होता है:
SELECT
json_quote( null ) AS json_quote,
json_type(json_quote( null )) AS json_type,
1 / 0 AS actual_null;
परिणाम:
+------------+-----------+-------------+ | json_quote | json_type | actual_null | +------------+-----------+-------------+ | null | null | N/A | +------------+-----------+-------------+
SQLite में, किसी संख्या को शून्य से विभाजित करने पर एक शून्य मान प्राप्त होता है (कई अन्य DBMS ऐसे मामलों में त्रुटि देते हैं)। इस उदाहरण में, मैंने N/A
. वापस करने के लिए शून्य मान सेट किए थे , और इसलिए हम देख सकते हैं कि दो कार्यों के आउटपुट और वास्तविक शून्य मान के बीच अंतर है। यानी, उपरोक्त आउटपुट में एकमात्र शून्य मान अंतिम कॉलम में है।
इतना सब कहने के बाद भी, एक शून्य मान अभी भी SQL टेक्स्ट मान null
. में परिणत हो सकता है json_quote()
को कॉल करते समय लौटाया जा रहा है . शायद एक उदाहरण इसे मेरे द्वारा समझाए जाने से बेहतर तरीके से दिखाता है:
SELECT
json_quote( 1 / 0 ),
json_type(json_quote( 1 / 0 )),
json_type( 1 / 0 ),
1 / 0;
परिणाम:
+---------------------+--------------------------------+--------------------+-------+ | json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 | +---------------------+--------------------------------+--------------------+-------+ | null | null | N/A | N/A | +---------------------+--------------------------------+--------------------+-------+
हम देख सकते हैं कि पहले दो कॉलम null
लौटाते हैं SQL टेक्स्ट मान, और अन्य दो कॉलम वास्तविक शून्य मान लौटाते हैं।
पासिंग बूलियन
यहां true
. जैसे बूलियन पास करने का एक उदाहरण दिया गया है और false
:
SELECT
json_quote( true ) AS true,
json_quote( false ) AS false;
परिणाम:
+------+-------+ | true | false | +------+-------+ | 1 | 0 | +------+-------+
अवैध तर्क गणना
तर्क पारित किए बिना फ़ंक्शन को कॉल करने से त्रुटि होती है:
SELECT json_quote();
परिणाम:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote(); ^--- error here
और बहुत अधिक तर्क पारित करने से भी त्रुटि होती है:
SELECT json_quote( 1, 2 );
परिणाम:
Parse error: wrong number of arguments to function json_quote() SELECT json_quote( 1, 2 ); ^--- error here