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

किसी विशेष मान के लिए MySQL में Json कुंजियाँ प्राप्त करें

जैसा कि मैंने कहा, MySQL में JSON को पार्स करना एक चुनौती हो सकती है क्योंकि आप यहां टेक्स्ट आधारित कुंजियों के साथ काम कर रहे हैं।
तो आपको JSON_KEYS() का उपयोग करना होगा एक संख्या जनरेटर के साथ संयोजन में उन्हें प्राप्त करने के लिए JSON_EXTRACT() में उपयोग करने के लिए एक गतिशील JSON पथ उत्पन्न होता है

MySQL का 8 फंक्शन JSON_TABLE() इसे और अधिक आसान बनाता है..

क्वेरी

 SELECT
  JSON_UNQUOTE(
    JSON_EXTRACT(json ,  CONCAT('$.', SUBSTRING_INDEX(
       SUBSTRING_INDEX(json_parsed, ',', number_generator.number)
       , ','
       , -1
     ), '.name'))) AS name
FROM (

  SELECT 
   @row := @row + 1 AS number
  FROM (
    SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION   SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
  ) row1
  CROSS JOIN (
    SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION  SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
  ) row2
  CROSS JOIN (
    SELECT @row := 0 
  ) init_user_params 
) AS number_generator
CROSS JOIN (

    SELECT  
        SUBSTRING(json_keys, 2, json_keys_length - 2) AS json_parsed
      , json_keys
      , json
      , JSON_LENGTH(json_keys) AS json_array_length                       
    FROM (
       SELECT 
            JSON_KEYS(record.json) AS json_keys
          , json
          , LENGTH(JSON_KEYS(record.json)) AS json_keys_length
       FROM (
          SELECT 
             '{
                "Intitule": {
                   "name": "Intitule de la formation",
                   "stats": false,
                   "is_array": false,
                   "is_filter": true,
                   "chart": "pie",
                   "col": "6"
                },
                "Fin": {
                    "name": "Date de fin",
                    "stats": false,
                    "is_array": false,
                    "is_filter": false,
                    "chart": "pie",
                    "col": "6"
                    }
                }' AS json
          FROM  
            DUAL  
       ) AS record                     
    ) AS json_information  
  ) AS json_init
WHERE
   number_generator.number BETWEEN 0 AND json_array_length
 AND
   JSON_EXTRACT(json ,  CONCAT('$.', SUBSTRING_INDEX(
     SUBSTRING_INDEX(json_parsed, ',', number_generator.number)
     , ','
     , -1
   ), '.is_filter')) = true 

परिणाम

| name                     |
| ------------------------ |
| Intitule de la formation |

देखें डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (गरीब आदमी) उत्पाद अनुशंसा कार्यान्वयन

  2. मैं रूम डेटाबेस एंड्रॉइड में मूल्य कैसे जोड़ सकता हूं?

  3. पृष्ठ को पुनः लोड किए बिना mysql डेटाबेस को कैसे अपडेट करें

  4. अगली कड़ी में mysql कनेक्शन की जाँच करें

  5. एक कॉलम को कैसे परिभाषित करें जो पूंजीकरण को स्वचालित कर सके?