मेरे पास JSON_ARRAY कॉलम के साथ एक साधारण तालिका है:
+----+---------+
| id | content |
+----+---------+
| 1 | [3, 4] |
| 2 | [5, 6] |
+----+---------+
मैं एक विशिष्ट आईडी के लिए सभी सामग्री संदर्भों को सूचीबद्ध करना चाहता हूं
SELECT JSON_EXTRACT(content, '$') as res FROM table WHERE id=1
लेकिन मैं परिणाम पंक्तियों में होना चाहता हूं:
+-----+
| res |
+-----+
| 3 |
| 4 |
+-----+
2 जवाब
आप इसे MySQL 8.0 में JSON_TABLE()के साथ कर सकते हैं। ए>:
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
मैंने MySQL 8.0.17 पर परीक्षण किया, और यह आउटपुट है:
+------+
| res |
+------+
| 3 |
| 4 |
+------+
यदि आप MySQL 8.0 से पुराने संस्करण का उपयोग करते हैं, तो आपके पास ये विकल्प हैं:
- कुछ असंभव जटिल SQL समाधान खोजें। समस्या को हल करने का यह लगभग हमेशा गलत तरीका है, क्योंकि आप कोड के साथ समाप्त होते हैं जो बनाए रखने के लिए बहुत महंगा है।
- जेएसओएन सरणी को यथावत प्राप्त करें, और इसे एप्लिकेशन कोड में विस्फोट करें।
- अपने डेटा को सामान्य करें ताकि आपके पास JSON सरणियों का उपयोग करने के बजाय प्रति पंक्ति एक मान हो।
मुझे अक्सर स्टैक ओवरफ़्लो पर MySQL में JSON का उपयोग करने के बारे में प्रश्न मिलते हैं जो मुझे विश्वास दिलाते हैं कि इस सुविधा ने MySQL को बर्बाद कर दिया है। डेवलपर इसका गलत इस्तेमाल करते रहते हैं। उन्हें यह पसंद है कि यह अर्ध-संरचित डेटा को सम्मिलित करना आसान बनाता है, लेकिन वे पाते हैं कि यह उस डेटा की क्वेरी को बहुत जटिल बना देता है।
वह एक बुरा विचार था। मैं इसे हल करने के लिए PHP के साथ एक json_decode() करूँगा। धन्यवाद दोस्तों।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
mysql
MySQL एक फ्री, ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) का उपयोग करता है। इस टैग को अन्य DBs जैसे SQL Server, SQLite आदि के लिए उपयोग न करें। वे विभिन्न DB हैं जो सभी डेटा का प्रबंधन करने के लिए SQL की अपनी बोलियों का उपयोग करते हैं।