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

JSON_REPLACE() – Nahradí hodnoty v dokumentu JSON v MySQL

V MySQL je to JSON_REPLACE() funkce nahradí hodnoty v dokumentu JSON a vrátí výsledek.

Jako první argument zadáte dokument JSON, za nímž následuje cesta k nahrazení dat a za ním hodnota, kterou se má nahradit stávající hodnota.

V případě potřeby můžete nahradit data na více místech v dokumentu. Chcete-li to provést, jednoduše zadejte více párů cesta/hodnota podle potřeby.

Syntaxe

Syntaxe vypadá takto:

JSON_REPLACE(json_doc, cesta, hodnota[, cesta, hodnota] ...)

Kde json_doc je dokument JSON, path je cesta k nahrazení dat na a val je nová hodnota, která nahradí stávající hodnotu.

Dvojice cesta/hodnota se vyhodnocují zleva doprava. Dokument vytvořený vyhodnocením jednoho páru se stane novou hodnotou, vůči které je vyhodnocen další pár.

Pokud pár cesta/hodnota v dokumentu JSON neexistuje, je ignorován a nemá žádný účinek.

První argument musí být platný dokument JSON, jinak dojde k chybě.

Také path argument musí být platný výraz cesty a nesmí obsahovat * nebo ** zástupný znak, jinak dojde k chybě.

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

Zde je příklad k demonstraci.

SELECT JSON_REPLACE('{"a":1, "b":2, "c":3}', '$.b', 9) AS 'Result';

Výsledek:

+--------------------------+| Výsledek |+--------------------------+| {"a":1, "b":9, "c":3} |+--------------------------+ 

V tomto případě jsme nahradili b s hodnotou 9 . Je to proto, že jsme zadali $.b jako druhý argument a 9 jako třetí.

Zde je další příklad:

SELECT JSON_REPLACE('{"Jméno":"Bart", "Věk":10}', '$.Name', 'Nelson - Ha Ha!') AS 'Výsledek';

Výsledek:

+----------------------------------------+| Výsledek |+----------------------------------------+| {"Věk":10, "Jméno":"Nelson - Ha Ha!"} |+----------------------------- -----------+

Příklad 2 – Neexistující cesta

Pokud zadáte cestu, která neexistuje, nic se neodstraní. Původní dokument JSON je vrácen bez úprav.

SELECT JSON_REPLACE('{"Jméno":"Homer", "Věk":39}', '$.Gender', 'Muž') AS 'Výsledek';

Výsledek:

+------------------------------+| Výsledek |+------------------------------+| {"Věk":39, "Jméno":"Homer"} |+------------------------------+ 

Příklad 3 – Pole

Zde je příklad použití pole.

SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) AS 'Výsledek';

Výsledek:

+------------+| Výsledek |+-----------+| [9, 2, 3] |+------------+

Pole používají číslování založené na nule, takže v tomto případě je nahrazen první prvek.

Zde je další příklad pole. Tentokrát nahradíme hodnotu ve vnořeném poli.

SELECT JSON_REPLACE('[1, 2, [3, 4, 5]]', '$[2][1]', 9) AS 'Výsledek';

Výsledek:

+-------------------+| Výsledek |+-------------------+| [1, 2, [3, 9, 5]] |+-------------------+

Příklad 4 – Více cest

Chcete-li nahradit data na více místech v dokumentu JSON, můžete zadat více než jednu cestu.

Základní příklad:

SELECT JSON_REPLACE('[1, 2, 3, 4, 5]', '$[1]', 9, '$[3]', 22) AS 'Výsledek';

Výsledek:

+-------------------+| Výsledek |+------------------+| [1, 9, 3, 22, 5] |+------------------+

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

Zde je příklad s (trochu) větším dokumentem JSON.

SET @data ='{ "Osoba":{ "Jméno":"Homer", "Věk":39, "Hobby":["Jídlo", "Spánek"] } }';SELECT JSON_REPLACE(@data , '$.Person.Name', 'Bart', '$.Person.Age', 10, '$.Person.Hobbies[1]', 'Base Jumping') JAKO 'Výsledek';

Výsledek:

+---------------------------------------------- ----------------------------------+| Výsledek |+----------------------------------------------- ---------------------------------+| {"Osoba":{"Věk":10, "Jméno":"Bart", "Záliby":["Jídlo", "Base Jumping"]}} |+------------- -------------------------------------------------- ------------------+

  1. Jak vrátit pozici položky seznamu v MySQL

  2. Představujeme běžné tabulkové výrazy v SQL Server

  3. vytvořit tabulku se sekvencí.nextval v oracle

  4. Jak zavolat super metodu objektu Oracle PL/SQL