Mysql
 sql >> база данни >  >> RDS >> Mysql

JSON_REPLACE() – Замяна на стойности в JSON документ в MySQL

В MySQL, JSON_REPLACE() функцията замества стойностите в JSON документ и връща резултата.

Предоставяте документа JSON като първи аргумент, последван от пътя за замяна на данните, последван от стойността, с която да замените съществуващата стойност.

Можете да замените данни на няколко места в документа, ако е необходимо. За да направите това, просто предоставете няколко двойки път/стойност според изискванията.

Синтаксис

Синтаксисът е така:

JSON_REPLACE(json_doc, път, val[, път, val] ...)

Където json_doc е JSON документът, path е пътят за замяна на данните в и val е новата стойност, която да замени съществуващата стойност.

Двойките път/стойност се оценяват отляво надясно. Документът, създаден чрез оценка на една двойка, става новата стойност, спрямо която се оценява следващата двойка.

Ако двойката път/стойност не съществува в JSON документа, тя се игнорира и няма ефект.

Първият аргумент трябва да е валиден JSON документ, в противен случай възникне грешка.

Също така, path Аргументът трябва да е валиден израз на пътя и не може да съдържа * или ** заместващ знак, в противен случай ще възникне грешка.

Пример 1 – Основна употреба

Ето пример за демонстрация.

SELECT JSON_REPLACE('{"a":1, "b":2, "c":3}', '$.b', 9) КАТО 'Резултат';

Резултат:

+-------------------------+| Резултат |+-------------------------+| {"a":1, "b":9, "c":3} |+--------------------------+ 

В този случай заменихме b стойност с 9 . Това е така, защото посочихме $.b като втори аргумент и 9 като третия.

Ето още един пример:

SELECT JSON_REPLACE('{"Име":"Барт", "Възраст":10}', '$.Name', 'Нелсън - Ха-ха!') КАТО 'Резултат';

Резултат:

+---------------------------------------+| Резултат |+---------------------------------------+| {"Възраст":10, "Име":"Нелсън - Ха Ха!"} |+---------------------------- -----------+

Пример 2 – Несъществуващ път

Ако посочите път, който не съществува, нищо не се премахва. Оригиналният JSON документ се връща без промяна.

SELECT JSON_REPLACE('{"Име":"Homer", "Age":39}', '$.Gender', 'Мъж') КАТО 'Резултат';

Резултат:

+------------------------------+| Резултат |+------------------------------+| {"Възраст":39, "Име":"Омир"} |+------------------------------+ 

Пример 3 – Масиви

Ето пример за използване на масив.

SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) КАТО 'Резултат';

Резултат:

+-----------+| Резултат |+-----------+| [9, 2, 3] |+----------+

Масивите използват номериране на базата на нула, така че в този случай първият елемент се заменя.

Ето още един пример за масив. Този път заменяме стойност във вложен масив.

SELECT JSON_REPLACE('[1, 2, [3, 4, 5]]', '$[2][1]', 9) КАТО 'Резултат';

Резултат:

+------------------+| Резултат |+------------------+| [1, 2, [3, 9, 5]] |+------------------+

Пример 4 – Множество пътища

Можете да посочите повече от един път, за да замените данни на множество места в JSON документа.

Основен пример:

SELECT JSON_REPLACE('[1, 2, 3, 4, 5]', '$[1]', 9, '$[3]', 22) КАТО 'Резултат';

Резултат:

+-----------------+| Резултат |+------------------+| [1, 9, 3, 22, 5] |+-----------------+

Пример 5 – По-голям JSON документ

Ето пример с (малко) по-голям JSON документ.

SET @data ='{ "Person":{ "Име":"Homer", "Age":39, "Хобита":["Хранене", "Спане"] } }';ИЗБЕРЕТЕ JSON_REPLACE(@data , '$.Person.Name', 'Bart', '$.Person.Age', 10, '$.Person.Hobbies[1]', 'Base Jumping') КАТО 'Резултат';

Резултат:

+------------------------------------------------------- ----------------------------------+| Резултат |+-------------------------------------------------------- ---------------------------------+| {"Човек":{"Възраст":10, "Име":"Барт", "Хобита":["Хранене", "Скачане на база"]}} |+----------- -------------------------------------------------- ------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пребройте броя на появяванията на низ в поле VARCHAR?

  2. Как да използвате ролите, които са се променили в MySQL 8.0

  3. Създаване на потребител в MySQL

  4. CURTIME() Примери – MySQL

  5. MIN/MAX спрямо ORDER BY и LIMIT