कभी-कभी आपको वस्तुओं की 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 मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!