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

JSON_VALUE () MySQL में

MySQL में, JSON_VALUE() फ़ंक्शन निर्दिष्ट पथ पर JSON दस्तावेज़ से एक मान निकालता है।

फ़ंक्शन को MySQL 8.0.21 में पेश किया गया था।

सिंटैक्स

वाक्य रचना इस प्रकार है:

JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error])

कहां:

on_empty:
    {NULL | ERROR | DEFAULT value} ON EMPTY

on_error:
    {NULL | ERROR | DEFAULT value} ON ERROR

उदाहरण

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

SELECT JSON_VALUE( '{ "name" : "Wag", "type" : "Dog" }', '$.type' );

परिणाम:

Dog

सरणी

किसी सरणी से मान प्राप्त करने का एक उदाहरण यहां दिया गया है:

SELECT JSON_VALUE( '{ "name" : "Wag", "scores" : [ 25, 36, 48 ] }', '$.scores[1]' );

परिणाम:

36

सरणी शून्य आधारित हैं, इसलिए 1 दूसरा तत्व लौटाता है (0 पहला लौटाएगा)।

एम्बेडेड दस्तावेज़

एम्बेडेड ऑब्जेक्ट से मान प्राप्त करने का एक उदाहरण यहां दिया गया है:

SELECT JSON_VALUE(
    '{ 
        "_id" : 1, 
        "details" : { 
            "name" : "Wag",
            "type" : "Dog"
            } 
    }', 
    '$.details.type' 
    );

परिणाम:

Dog

वापसी का प्रकार

यहां रिटर्न प्रकार निर्दिष्ट करने का एक उदाहरण दिया गया है:

SELECT JSON_VALUE(
    '{ 
        "_id" : 1, 
        "details" : { 
            "name" : "Wag",
            "type" : "Dog"
            } 
    }', 
    '$.details' RETURNING json
    );

परिणाम:

{"name": "Wag", "type": "Dog"}

यदि आप रिटर्न प्रकार निर्दिष्ट नहीं करते हैं, तो रिटर्न प्रकार VARCHAR(512) . है ।

रिक्त परिणाम

डिफ़ॉल्ट रूप से, यदि निर्दिष्ट पथ पर कोई डेटा नहीं मिलता है, NULL लौटा दिया गया है:

SELECT JSON_VALUE(
    '{ 
        "name" : "Wag",
        "type" : "Dog"
    }', 
    '$.score'
    );

परिणाम:

NULL

हालांकि, निम्नलिखित विकल्पों का उपयोग स्पष्ट रूप से निर्दिष्ट करने के लिए किया जा सकता है कि दिए गए पथ पर कोई डेटा नहीं मिलने पर क्या होना चाहिए:

  • NULL ON EMPTY :फ़ंक्शन NULL लौटाता है; यह डिफ़ॉल्ट व्यवहार है।
  • DEFAULT value खाली पर :प्रदान किया गया value वापस किया जाता है। मान का प्रकार रिटर्न प्रकार से मेल खाना चाहिए।
  • ERROR ON EMPTY :फ़ंक्शन एक त्रुटि फेंकता है।

उदाहरण:

SELECT JSON_VALUE(
    '{ 
        "name" : "Wag",
        "type" : "Dog"
    }', 
    '$.score' 
    DEFAULT 'Nothing found' ON EMPTY
    );

परिणाम:

Nothing found

त्रुटियां

त्रुटि होने पर क्या होता है, यह निर्दिष्ट करने के लिए निम्नलिखित का उपयोग किया जा सकता है:

  • NULL ON ERROR :JSON_VALUE() रिटर्न NULL; यह डिफ़ॉल्ट व्यवहार है।
  • DEFAULT value त्रुटि पर :यह लौटाया गया मान है; इसका मान वापसी प्रकार से मेल खाना चाहिए।
  • ERROR ON ERROR :एक त्रुटि हुई है।

यदि उपयोग किया जाता है, तो ON EMPTY किसी भी ON ERROR . से पहले होना चाहिए खंड। उन्हें गलत क्रम में निर्दिष्ट करने से सिंटैक्स त्रुटि होती है।

सूचकांक

जैसा कि MySQL 8.0.21 रिलीज नोट्स में बताया गया है, JSON_VALUE() फ़ंक्शन JSON . पर अनुक्रमणिका के निर्माण को सरल बनाता है स्तंभ। JSON_VALUE(json_doc . पर एक कॉल , path रिटर्निंग type ) कॉल करने के बराबर है CAST( JSON_UNQUOTE( JSON_EXTRACT(json_doc) , path ) ) AS type )

रिलीज़ नोट्स में इस्तेमाल किया गया उदाहरण यहां दिया गया है:

CREATE TABLE inventory(
    items JSON,
    INDEX i1 ( (JSON_VALUE(items, '$.name' RETURNING CHAR(50))) ),
    INDEX i2 ( (JSON_VALUE(items, '$.price' RETURNING DECIMAL(5,2))) ),
    INDEX i3 ( (JSON_VALUE(items, '$.quantity' RETURNING UNSIGNED)) )
);

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql में क्लॉज द्वारा यूनियन और ऑर्डर का उपयोग करना

  2. आर्क लिनक्स पर MySQL रिलेशनल डेटाबेस का उपयोग करना

  3. Laravel 5 PDOException ड्राइवर नहीं ढूँढ सका

  4. अपरिभाषित फ़ंक्शन mysql_connect ()

  5. PHP और MySQL पेजिनेशन