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

MySQL और JSON - सरणी को पंक्तियों में बदलें

अपनी सरणी को पंक्तियों में बदलने के तीन तरीके यहां दिए गए हैं। उसी ग्रहण किए गए JSON मान का उपयोग करना:

SET @j = '[10, 20, {"a": "bbb"}]';

संख्याओं की इन-लाइन तालिका का उपयोग करना। MySQL और MariaDB संगत:

WITH sequenceGenerator (sequenceNumber) AS (
    SELECT 0 AS sequenceNumber
    UNION ALL
    SELECT 1
    UNION ALL
    SELECT 2
)
SELECT
    JSON_EXTRACT(@j, CONCAT('$[', sequenceNumber, ']')) AS arrayValue
FROM
    sequenceGenerator;

MySQL 8.0.4+ JSON_TABLE() का उपयोग करना:

SELECT
    arrayValue
FROM
    JSON_TABLE(
        @j,
         '$[*]'
        COLUMNS(
            arrayValue JSON PATH '$')
    ) AS tt;

इन-लाइन अनुक्रम तालिका से छुटकारा पाने के लिए MariaDB SEQUENCE इंजन का उपयोग करना:

SELECT
    JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
FROM
    seq_0_to_2;

मारियाडीबी में अधिक सामान्य बनाने के लिए, सरणी लंबाई के लिए "सर्वश्रेष्ठ अनुमान" अधिकतम का उपयोग करें, फिर अनुक्रम को JSON लंबाई तक सीमित करें। यह उदाहरण मानता है कि सबसे बड़ी सरणी में 1024 या उससे कम तत्व होंगे:

SELECT
    JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
FROM
    seq_0_to_1024 AS sequenceTable
WHERE
    sequenceTable.seq < JSON_LENGTH(@j);



  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. क्या आप ON DUPLICATE KEY में समग्र मानों का उपयोग कर सकते हैं

  3. android.content.res.Resources$NotFoundException:स्ट्रिंग संसाधन आईडी #0x2 डेटाबेस

  4. मैं Kubernetes का उपयोग करके mysqldump से डंप फ़ाइल को कैसे पुनर्स्थापित करूं?

  5. Mysql जहां अल्पविराम से अलग सूची के साथ समस्या