sql >> Databáze >  >> RDS >> Mysql

JSON_ARRAY_INSERT() – Vložení hodnot do pole JSON v MySQL

V MySQL je to JSON_ARRAY_INSERT() funkce se používá k vložení nové hodnoty do pole.

Jako první argument zadáte dokument JSON, za ním následuje cesta, do které se má vložit, a za ním hodnota, kterou chcete vložit.

Syntaxe

Syntaxe vypadá takto:

JSON_INSERT(json_doc, path, val[, path, val] ...)

Kde:

  • json_doc je dokument JSON.
  • path je cesta prvku, pro který se má vložit nová hodnota.
  • val je nová hodnota, která bude vložena.

Páry cesta-hodnota se vyhodnocují zleva doprava. Dokument vytvořený vyhodnocením jednoho páru se stane novou hodnotou, podle které je vyhodnocen další pár.

Příklad 1 – Základní použití

Zde je příklad k demonstraci.

SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';

Výsledek:

+--------------+
| Result       |
+--------------+
| [1, 4, 2, 3] |
+--------------+

Takže 3. argument je vložen do pole na zadané cestě. V tomto případě používám $[1] pro cestu, která odkazuje na druhý prvek (pole JSON používají číslování založené na nule – číslování začíná 0 ).

Příklad 2 – vnořené pole

Zde je příklad vložení hodnoty do pole, které je vnořeno do jiného pole.

SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';

Výsledek:

+-------------------+
| Result            |
+-------------------+
| [1, 2, [3, 5, 4]] |
+-------------------+

Zde tedy používám $[2][1] jako cesta. [2] odkazuje na 3. prvek vnějšího pole. [1] odkazuje na 2. prvek vnořeného pole.

Příklad 3 – Větší dokument JSON

Tento příklad používá (trochu) větší dokument JSON. To ukazuje, jak se cesta mění v závislosti na tom, kde se pole v dokumentu nachází.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';

Výsledek:

+----------------------------------------------------------------------------------+
| Result                                                                           |
+----------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} |
+----------------------------------------------------------------------------------+


  1. Jak VYBRAT Z uložené procedury

  2. Jaké je použití příkazu SQL GROUP BY?

  3. Jak používat klauzuli hromadného sběru PL/SQL s příkazem FETCH INTO

  4. Jak provést SQL dotaz bez zobrazení výsledků