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

MYSQL में JSON सरणी पढ़ें

mysql> SET @`json` :=
    -> '[
    '>    {
    '>      "id": 1, "type": 2
    '>    },
    '>    {
    '>      "id": 2, "type": 1
    '>    }
    '> ]';
Query OK, 0 rows affected (0.00 sec)

आप सभी ids प्राप्त कर सकते हैं एक सरणी में:

mysql> SELECT JSON_EXTRACT(@`json` ,'$[*].id');
+----------------------------------+
| JSON_EXTRACT(@`json` ,'$[*].id') |
+----------------------------------+
| [1, 2]                           |
+----------------------------------+
1 row in set (0.00 sec)

प्रत्येक JSON ids तक पहुंच सकते हैं :

mysql> SELECT JSON_EXTRACT(@`json` ,'$[0].id');
+----------------------------------+
| JSON_EXTRACT(@`json` ,'$[0].id') |
+----------------------------------+
| 1                                |
+----------------------------------+
1 row in set (0.00 sec)

कोशिश करें:

mysql> DROP PROCEDURE IF EXISTS `new_procedure`;
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER //

mysql> CREATE PROCEDURE `new_procedure`(`json` JSON)
    -> BEGIN
    ->   DECLARE `json_items` BIGINT UNSIGNED DEFAULT JSON_LENGTH(`json`);
    ->   DECLARE `_index` BIGINT UNSIGNED DEFAULT 0;
    -> 
    ->   DROP TEMPORARY TABLE IF EXISTS `jsonTemporary`;
    -> 
    ->   CREATE TEMPORARY TABLE IF NOT EXISTS `jsonTemporary`
    ->     (`id` BIGINT UNSIGNED NOT NULL);
    -> 
    ->   WHILE `_index` < `json_items` DO
    ->     INSERT INTO `jsonTemporary` (`id`)
    ->     VALUES (JSON_EXTRACT(`json`, CONCAT('$[', `_index`, '].id')));
    ->     SET `_index` := `_index` + 1;
    ->   END WHILE;
    -> 
    ->   SELECT `id` FROM `jsonTemporary`;
    ->   DROP TEMPORARY TABLE IF EXISTS `jsonTemporary`;
    -> END//
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;

mysql> CALL `new_procedure`(@`json`);
+----+
| id |
+----+
|  1 |
|  2 |
+----+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

देखें db-fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli_दूरस्थ सर्वर से कनेक्ट करें

  2. गैर लैटिन वर्ण और ouch

  3. MySQL कॉलम में न्यूनतम अप्रयुक्त मान प्राप्त करें

  4. पहले अक्षर को कैपिटलाइज़ करें। माई एसक्यूएल

  5. जावा को एक MySQL डेटाबेस से कनेक्ट करें