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

MySQL में JSON कॉलम को कैसे क्वेरी करें

कभी-कभी आपको वस्तुओं की JSON सरणी खोजने, JSON डेटा निकालने या MySQL में JSON डेटा पुनर्प्राप्त करने की आवश्यकता हो सकती है। इस लेख में, हम देखेंगे कि MySQL में JSON कॉलम को कैसे क्वेरी करें।


MySQL में JSON कॉलम को कैसे क्वेरी करें

मान लें कि आपके पास निम्न तालिका है उपयोगकर्ता (आईडी, विवरण) जहां आईडी एक पूर्णांक और प्राथमिक कुंजी है जबकि विवरण एक JSON डेटा प्रकार कॉलम है।

create table users(
    id int auto_increment primary key,
    details json
   );

हम अपनी तालिका में निम्नलिखित JSON डेटा सम्मिलित करेंगे।

insert into users(details)
    values(
      '{ "page": "/" , 
         "name": "Safari", 
         "os": "Mac", 
         "spend": [100, 50]
         "resolution": { "x": 1920, "y": 1080 } }'
),
(
      '{ "page": "/products", 
         "name": "Chrome", 
         "os": "Windows", 
         "spend": [150, 250]
         "resolution": { "x": 1680, "y": 1050 } }'
),
(
     '{ "page": "/shoes", 
        "name": "Firefox", 
        "os": "Windows", 
        "spend": [200,300]
        "resolution": { "x": 1280, "y": 800 } }'
);


MySQL में JSON कॉलम से डेटा कैसे प्राप्त करें

MySQL JSON कॉलम से डेटा निकालने के लिए दो ऑपरेटर ( -> और ->> ) प्रदान करता है।

->> स्ट्रिंग मान प्राप्त करेगा जबकि -> उद्धरण के बिना मूल्य प्राप्त करेगा।

यहाँ विवरण . से ब्राउज़र नाम निकालने के लिए SQL क्वेरी है कॉलम

mysql> select id, 
       details->>'$.name' as browser_str,
       details->'$.name' as browser_name
       from users;
+----+--------------+--------------+
| id | browser_str  | browser_name |
+----+--------------+--------------+
|  1 | "Safari"     |  Safari      |
|  2 | "Chrome"     |  Chrome      |
|  3 | "Firefox"    |  Firefox     |
+----+--------------+--------------+

जैसा कि आप देख सकते हैं ->> उद्धृत स्ट्रिंग्स के रूप में आउटपुट देता है, जबकि -> मान वैसे ही लौटाता है जैसे वे हैं।

आप इन ऑपरेटरों का उपयोग WHERE क्लॉज में भी कर सकते हैं जैसा कि नीचे दिखाया गया है।

mysql> select id, 
       details->>'$.name' as browser_str,
       details->'$.name' as browser_name
       from users
       where ->>'$.name'="Chrome";
+----+--------------+--------------+
| id | browser_str  | browser_name |
+----+--------------+--------------+
|  2 | "Chrome"     |  Chrome      |
+----+--------------+--------------+

अगर आप resolution.x को पुनः प्राप्त करना चाहते हैं मान, यानी किसी ऑब्जेक्ट से, तो आप डॉट (.) ऑपरेटर का उपयोग करके ऐसा कर सकते हैं, जैसा कि नीचे दिखाया गया है।

mysql> select details->'$.resolution.x' as  width
       from users;
+----+-----------+
| id |  width    |
+----+-----------+
|  1 | 1920      |
|  2 | 1680      |
|  3 | 1280      |
+----+-----------+

इसी तरह, यदि आप किसी JSON से एक सरणी तत्व निकालना चाहते हैं, तो आप उन्हें वर्ग कोष्ठक '[ ]' और सरणी तत्व के सूचकांक का उपयोग करके एक्सेस कर सकते हैं। यहाँ सरणी के पहले तत्व को निकालने के लिए SQL क्वेरी है खर्च

mysql> select details->>'$.spend[0]' as spend
       from users;
+----+-----------+
| id |  spend    |
+----+-----------+
|  1 | 100       |
|  2 | 150       |
|  3 | 200       |
+----+-----------+


Ubiq का उपयोग करके JSON निकालें

Ubiq रिपोर्टिंग टूल उपरोक्त सभी SQL प्रश्नों का समर्थन करता है और SQL परिणामों को अलग-अलग तरीकों से देखना आसान बनाता है। Ubiq में ऊपर बताई गई पहली SQL क्वेरी यहां दी गई है।

MySQL के लिए रिपोर्टिंग टूल चाहिए? Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XML_LOAD() का उपयोग करके XML फ़ाइल को MySQL डेटाबेस तालिका में कैसे आयात करें; समारोह

  2. mysqli_stmt ::bind_result ():बाइंड चर की संख्या तैयार कथन में फ़ील्ड की संख्या से मेल नहीं खाती

  3. विंडोज़ पर MySQL 8 कैसे स्थापित करें

  4. AWS RDS पर MySQL डेटाबेस और Oracle डेटाबेस के साथ JDeveloper का उपयोग करना, भाग 3

  5. MySQL में यूनिक आईडी कैसे जनरेट करें?