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

MySQL एक सरणी में विशिष्ट JSON ऑब्जेक्ट को अपडेट करता है

एक विकल्प:

DROP PROCEDURE IF EXISTS `sp_update_json`;

DELIMITER //

CREATE PROCEDURE `sp_update_json`(
  `json` JSON,
  `value` VARCHAR(255)
)
BEGIN
  DECLARE `array_objects` JSON DEFAULT
    REPLACE(JSON_SEARCH(`json`,
                'all',
                'loud',
                NULL,
                '$.parrot[*].volume'
               ), 'volume', 'says');
  DECLARE `max_objects` INT UNSIGNED DEFAULT 
    JSON_LENGTH(`array_objects`);
  DECLARE `current_object` INT UNSIGNED DEFAULT 0;
  WHILE `current_object` < `max_objects` DO
    SET `json` := JSON_REPLACE(`json`, 
                           JSON_UNQUOTE(                             
                             JSON_EXTRACT(
                               `array_objects`,
                               CONCAT('$[', `current_object`, ']')
                             )
                           ), `value`);
    SET `current_object` := `current_object` + 1;
  END WHILE;
  SELECT `json`;
END//

DELIMITER ;

SET @`j` := '
{
  "cat": "meow", 
  "dog": "woof", 
  "parrot": [
    {"volume": "quiet", "says": "hello"}, 
    {"volume": "loud", "says": "polly"},
    {"volume": "loud", "says": "cracker"}
  ]
}';

CALL `sp_update_json`(@`j`, 'pretty bird');

देखें 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. किसी फ़ील्ड के डिफ़ॉल्ट मान को बदलने के लिए माइग्रेशन और सभी मौजूदा रिकॉर्ड के मान को नए डिफ़ॉल्ट मान में तभी बदलें जब उसका डिफ़ॉल्ट मान पुराना हो।

  2. MySQL में संग्रहीत कार्यविधि को कैसे शेड्यूल करें

  3. IOS डिवाइस से POST विधि द्वारा दूरस्थ mysql डेटाबेस में डेटा डालें

  4. एक्लिप्सलिंक और जोडा-टाइम का उपयोग कर डेटाबेस में यूटीसी में डेट-टाइम कैसे स्टोर करें?

  5. पर्ल का उपयोग करके MySQL से कैसे कनेक्ट करें